我已经知道您可以将接口作为参数传递给方法。这允许您仅指定方法所需的对象的相关成员。我想做的是能够将接口类型作为参数传递。
假设我声明了几个接口,这些接口在一系列对象中分布不均,这些对象全部形成一个列表/集合。我可以编写一个辅助方法,该方法将列表中的对象和接口类型都作为参数,并检查该对象是否实现了接口?以下代码显然是垃圾,但是它说明了我想做的事情:
private bool CheckType(object o, interface intrfce)
{
try
{
object x = (object)(intrfce)o;
return true;
}
catch (InvalidCastException e)
{
return false
}
}
目前,我只是在计划为接口设置一个枚举,并要求所有类公开它们实现的接口的数组/列表。然后我可以只检查的枚举,看看接口它们是相关的(我只关心我所创建的界面-我不回国后IEnumerable
或ICloneable
等),或者我可以写帮手每个接口的方法。我只是想知道是否有更优雅的方法?
您可以使用泛型来做到这一点:
private bool CheckType<T>(object o) {
return o is T;
}
您这样称呼它:
foreach (object o in myList) {
if (CheckType<MyInterface>(o)) {
... // Do something
}
}
考虑到这样做很容易,您也可以在条件本身中这样做。
最后,如果您只希望处理在混合列表中实现特定接口的对象,则可以使用LINQ的OfType
方法来实现,如下所示:
foreach (MyInterface o in myList.OfType<MyInterface>()) {
...
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句