Enabling class hierarchy and interfaces with Unity

(Memory Record)

Trying to do I in SOL I D. Given

public interface ISettingsReader
{
}

public interface ISettingsWriter : ISettingsReader
{
}

public class SettingsManager : ISettingsWriter
{
}

myContainer.RegisterType<ISettingsWriter, SettingsManager>();

why the following complains that ISettingsReaderit cannot be resolved:

public HomeController(ISettingsReader settingsReader)
{
}

I would suggest that since I registered SettingsManageras my ISettingsWriterand ISettingsWriterinherits ISettingsReader, will Unity be smart enough to understand that SettingsManageras well ISettingsReader?

Why should I do this explicitly:

myContainer.RegisterType<ISettingsReader, SettingsManager>();
myContainer.RegisterType<ISettingsWriter, SettingsManager>();
+4
source share
1 answer

, , , Unity , , ISettingsReader. , , - , Unity .

, , :

public class SettingsContainer : ISettingsReader { ... }
public class SettingsThing2 : ISettingsReader { ... }

, IEnumerable<ISettingsReader> ( - ) ISettingsReader. ISettingsReader, Unity , . , , , #.

, ISettingsReader , . .

+3

Source: https://habr.com/ru/post/1658993/


All Articles