我已经知道您可以将接口(interface)作为参数传递给方法。这允许您仅指定方法所需的对象的相关成员。我想做的是能够将接口(interface)类型作为参数传递。
假设我声明了几个接口(interface),这些接口(interface)在一系列对象中实现不均匀,这些对象都形成一个列表/集合。我可以编写一个辅助方法,将列表中的一个对象和一个接口(interface)类型作为参数,并检查该对象是否实现了该接口(interface)吗?下面的代码显然是垃圾,但它说明了我想做的事情:
private bool CheckType(object o, interface intrfce)
{
try
{
object x = (object)(intrfce)o;
return true;
}
catch (InvalidCastException e)
{
return false
}
}
目前我只是计划为接口(interface)设置枚举,并要求所有类公开它们实现的接口(interface)数组/列表。然后我可以检查枚举列表以查看它们有哪些相关的接口(interface)(我只对我创建的接口(interface)感兴趣 - 我不是在返回 IEnumerable
或 ICloneable
等)或者我可以为每个接口(interface)编写辅助方法。我只是想知道是否有更优雅的方法?
最佳答案
你可以使用泛型来做到这一点:
private bool CheckType<T>(object o) {
return o is T;
}
你可以这样调用它:
foreach (object o in myList) {
if (CheckType<MyInterface>(o)) {
... // Do something
}
}
考虑到这很容易做到,您不妨在条件本身中进行。
最后,如果您只想处理在混合列表中实现特定接口(interface)的对象,您可以使用 LINQ 的 OfType
方法来实现,如下所示:
foreach (MyInterface o in myList.OfType<MyInterface>()) {
...
}
关于c# - 将接口(interface)类型作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24465641/