尝试创建一个将在具有不同签名的两个类中使用的接口。 例如
public interface IEmp
{
int EmpId { get; set; }
string Name { get; set; }
}
public class Emp
{
public bool IsActive { get; set; }
public List < IEmp > Emps { get; set; }
}
public interface IEmpDict < T >
{
T Fetch();
void Add();
void Remove();
}
public class Class1 : IEmpDict< Emp >
{
public Emp Fetch() { throw new NotImplementedException(); }
public void Add() { throw new NotImplementedException(); }
public void Remove() { throw new NotImplementedException(); }
}
public class Class2 : IEmpDict< IEmp >
{
public IEmp Fetch() { throw new NotImplementedException(); }
public void Add() { throw new NotImplementedException(); }
public void Remove() { throw new NotImplementedException(); }
}
public class EmpService
{
private readonly IEmpDict< IEmp > _empDict;
public EmpService(IEmpDict<IEmp> empDict)
{
_empDict = empDict;
}
public void AddEmp() { _empDict.Add(); }
public void RemoveEmp() { _empDict.Remove(); }
public void FetchEmp() { _empDict.Fetch(); }
}
我在配置中有设置。根据配置设置,class1或class2将通过windsor城堡注入。 我如何在EmpService中注入相同的内容 - IEmpDict&lt; IEmp或Emp&gt;? 此外,IEmp和Emp具有不同的属性。在某些情况下,如果Emp对象已被实例化,我需要IsActive属性。 有没有更好的方法来处理这种实现?