c# - 根据泛型接口获取类属性
问题描述
可以说我有这个:
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 的工作方式非常相似。
解决方案
它需要一些管道和铸造,但你可以用字典来做到这一点:
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)];
}
}
推荐阅读
- javascript - javascript html画布中的换行符
- python - 系列的真值不明确
- python - Hot Encoding wrt to reference(列的最后一个按字典顺序排序的元素)
- hibernate - 部分日期匹配与 Hibernate 搜索
- google-cloud-platform - 使用 Packer 在 Google 云平台上启动脚本
- git - .gitattributes 在大多数 Windows 操作系统上不受尊重
- r - 将宽数据帧分解为两个不均匀的列数据帧并将其更改为长格式
- reactjs - FlatList onPress 函数重新渲染导致 usestate 更新后滞后
- python - XGBoost 调节 alpha 范围是多少?
- excel - Excel:使用 IF 语句连接单元格和文本