我有一个具有这样的构造函数的类:
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;
}
是否有解决此类问题的最佳实践?
依赖关系注入不是最终目标,而是对一系列特定问题的解决方案。例如,依赖注入使您可以轻松地替换抽象以进行单元测试,并使您的应用程序更加灵活,因为您可以交换,修饰和拦截依赖,而无需更改使用类。您可以在本书chapter 1(DIPP&P)的此免费提供的Dependency Injection Principles, Practices, and Patterns中找到有关依赖注入的良好介绍。
这并不意味着您应该注入类具有的[[every