Dependency Injection - Kiedy użyć wtrysku właściwości
Mam klasę, która ma takiego konstruktora:
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?>();
}
Chcę uzyskać tworzenie zależności z tego konstruktora. W pierwszym kroku chciałbym przenieść zależność ObjectA i B do parametrów konstruktorów, aby wstrzyknąć je za pomocą wtrysku konstruktora. W tym celu chciałbym użyć kontenera IoC, tam właśnie utknąłem. Pytanie brzmi: co zrobić z someString i słownikami. Muszę wprowadzić je do klasy, ponieważ zawartość słowników będzie ważną częścią testów jednostkowych. Czy dobrym pomysłem byłoby wstrzyknięcie ciągu znaków i słowników poprzez iniekcję własności (nie potrzebuję ich w innych klasach), więc skończyłbym na czymś takim ?:
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;
}
Czy istnieje najlepsza praktyka do rozwiązania czegoś takiego?