C#:具有不同参数的通用接口

时间:2016-06-22 05:39:30

标签: c#

尝试创建一个将在具有不同签名的两个类中使用的接口。 例如

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属性。 有没有更好的方法来处理这种实现?

0 个答案:

没有答案