3 回答
TA贡献1797条经验 获得超4个赞
我不知道 EF 是如何做到的,但是您可以使用 Types 键控的 Dictionary 轻松完成类似的操作
private Dictionary<Type, ICollection> registry = new Dictionary<Type, ICollection>();
// adds a collection of a certain type
public void Add<T>(T collection) where T: ICollection {
registry.Add(typeof(T), collection);
}
// create an empty collection of type T and add it to registry
public void InitCollection<T>() where T: ICollection {
registry.Add(typeof(T), (ICollection)Activator.CreateInstance(typeof(T)));
}
// returns a collection of type T if it has been registered
public T Set<T>() where T: ICollection {
return (T)registry[typeof(T)];
}
TA贡献1784条经验 获得超7个赞
我猜Enumerable.OfType<TResult>()
在这里会派上用场。它返回源枚举中IEnumerable<TResult>
所有类型的元素TResult
。至于它的实现,MSDN是这么说的:
该方法是通过使用延迟执行来实现的。立即返回值是一个存储执行操作所需的所有信息的对象。在通过直接调用其 GetEnumerator 方法或在 Visual C# 中使用 foreach 或在 Visual Basic 中使用 For Each 来枚举对象之前,不会执行此方法表示的查询。
- 3 回答
- 0 关注
- 152 浏览
添加回答
举报