可以说我有这个:public interface IMyInterface<T>{}public class MyClass{ public IMyInterface<Foo> Foos {get; set;} public IMyInterface<Bar> Bars {get; set;}}我想要一个这样的方法MyClass.Interfaces<T>()哪个将返回 MyClass.Foos 或 MyClass.Bars 取决于 T 值。我怎么做?这与 EF 的工作方式非常相似。
2 回答
函数式编程
TA贡献1807条经验 获得超9个赞
它需要一些管道和铸造,但你可以用字典来做到这一点:
public interface IMyInterface<T> {
}
public class Foo { }
public class Bar { }
public class MyClass {
Dictionary<Type, object> myInterfaces = new Dictionary<Type, object>();
public IMyInterface<Foo> Foos {
get { return (IMyInterface<Foo>)myInterfaces[typeof(Foo)]; }
set { myInterfaces[typeof(Foo)] = value; }
}
public IMyInterface<Bar> Bars {
get { return (IMyInterface<Bar>)myInterfaces[typeof(Bar)]; }
set { myInterfaces[typeof(Bar)] = value; }
}
public IMyInterface<T> Interfaces<T>() {
return (IMyInterface<T>)myInterfaces[typeof(T)];
}
}
- 2 回答
- 0 关注
- 144 浏览
添加回答
举报
0/150
提交
取消