Внедрение зависимостей - когда использовать внедрение свойств
У меня был класс, у которого есть конструктор, подобный этому: #
private string _someString;
private ObjectA _objectA;
private ObjectB _objectB;
private Dictionary<Enum, long?> _dictionaryA;
private Dictionary<Tuple<Enum,long?>, long?> _dictionaryB;
public SomeDiClass(string someString)
{
_someString = someString;
_objectA = new ObjectA();
_objectB = new ObjectB();
_dictionaryA = new Dictionary<Enum, long?>();
_dictionaryB = new Dictionary<Tuple<Enum, long?>, long?>();
}
Я хочу получить создание зависимости от этого конструктора. На первом этапе я бы переместил зависимость ObjectA и B в параметры конструкторов, чтобы внедрить их с помощью инжектора конструктора. Я хотел бы использовать контейнер IoC для этой цели, вот где я застрял на данный момент. Вопрос в том, что делать с someString и словарями. Мне нужно внедрить их в класс, потому что содержание словарей будет важной частью модульных тестов. Будет ли хорошей идеей вставлять строку и словари с помощью внедрения свойств (они мне не нужны в других классах), так что в итоге я получу нечто подобное ?:
private ObjectA _objectA;
private ObjectB _objectB;
public string SomeString { get; set; }
public Dictionary<Enum, long?> DictionaryA { get; set; }
public Dictionary<Tuple<Enum, long?>, long?> DictionaryB { get; set; }
public SomeDiClass(ObjectA objectA, ObjectB objectB)
{
_objectA = objectA;
_objectB = objectB;
}
Есть ли лучшая практика, чтобы решить что-то вроде этого?