3 回答

TA贡献1836条经验 获得超5个赞
首先,将您的代码注入一个实例WorkYear不会使您的代码独立WorkYear于Employee仍然知道此类的(例如在列表 List<WorkYear> WorkYears中),因此,如果您需要 DI,您应该与代表此类的接口进行对话IWorkYear(和这里该列表将List<IWorkYear> WorkYears改为)。
现在用于注入和实例化:
制作一个工厂类,如:
public static class MyFactory
{
public static object Create(Type classType, object[] data = null)
{
// create the class by reflection
}
}
(要通过反射创建类,请检查:Activator.CreateInstance)
然后更改方法的签名,StartWorking以便将类型注入到方法中:
public void StartWorking(Type workYearType, DateTime joinedCompany)
和线:
year = new WorkYear(joinedCompany.Year, this, periods);
将会 :
year = MyFactory.Create(classType, new object[]{ joinedCompany.Year, this, periods});
- 3 回答
- 0 关注
- 193 浏览
添加回答
举报