【发布时间】:2023-03-26 14:59:01
【问题描述】:
我有两个接口,一个泛型和一个非泛型,它们具有继承层次结构:
public interface IGenericRelation<TParent, TChild> : IRelation
public interface IRelation
通用的由几个动态加载的服务器控件实现,我希望枚举实现此接口的控件集合。我可以做到以下几点
foreach (IRelation relationControl in this.uiPlhControls.Controls.OfType<IRelation)
{ ... }
但我真正想做的是……
foreach (IGenericRelation<,> relationControl in this.uiPlhControls.Controls.OfType<IGenericRelation<,>)
{ ... }
然后能够将relationControl 与它提供的类型一起使用,因为这样我就可以访问IGenericRelation 上可用的强类型属性。不幸的是,这是不可能的,因为我似乎不能省略类型参数。
有谁知道一种方法来枚举实现通用接口的控件以防止我不得不编写多个循环而不是一个循环?也许使用反射?
【问题讨论】:
-
我似乎记得一个早期的 Linq 样本正是这样做的,但是当我来查看 linq 时却找不到它。我在看这个空间。 . .
标签: c# generics reflection collections