У меня есть класс, который служит моделью данных. Я упросту это так:
public class DataModel
{
public bool IsDataModelActive {get; internal set;}
}
Так что программисты, которые будут использовать мою DLL, увидят только то, что им нужно, не рискуя что-нибудь сломать.
С другой стороны, я хочу использовать DI в моих классах, которые используют DataModel
. Поэтому я должен создать интерфейс:
public interface IDataModel
{
bool IsDataModelActive {get;}
}
И вот я делаю это в своем классе:
public class Class1
{
IDataModel dataModel;
public Class1(IDataModel dataModel)
{
this.dataModel = dataModel
}
}
В этом случае я не могу получить доступ к установщику dataModel.IsDataModelActive.
Лучший патч, который я нашел, это наложить после получения инъекции:
public class Class1
{
DataModel dataModel;
public Class1(IDataModel dataModel)
{
this.dataModel = (DataModel)dataModel
}
}
Это помогает для модульных тестов, но как бы нарушает всю концепцию DI. Что если у меня есть другой класс, который реализует IDataModel
?
Какую стратегию вы / будете использовать?