将接口类型作为参数传递

Orphid

我已经知道您可以将接口作为参数传递给方法。这使您可以仅指定方法所需的对象的相关成员。我想做的是能够将接口类型作为参数传递。

假设我声明了几个接口,这些接口在一系列对象中均分布不均,这些对象全部形成一个列表/集合。我可以编写一个辅助方法,该方法将列表中的对象和接口类型都作为参数,并检查该对象是否实现了接口?以下代码显然是垃圾,但是它说明了我想做的事情:

private bool CheckType(object o, interface intrfce)
{
    try
    {
        object x = (object)(intrfce)o;
        return true;
    }
    catch (InvalidCastException e) 
    {
        return false
    }
}

目前,我只是在计划为接口设置一个枚举,并要求所有类公开它们实现的接口的数组/列表。然后我可以只检查的枚举,看看接口它们是相关的(我只关心我所创建的界面-我不回国后IEnumerableICloneable等),或者我可以写帮手每个接口的方法。我只是想知道是否有更优雅的方法?

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

您可以使用泛型来实现:

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将接口类型作为参数传递

来自分类Dev

Java:为什么使用通用功能比将接口类型作为功能参数更好?

来自分类Dev

如何检查接口类型的联合参数

来自分类Dev

Java-冲突的接口类型参数

来自分类Dev

Java-冲突的接口类型参数

来自分类Dev

无法按值将接口类型为'NSString'的对象传递给可变参数函数;格式字符串的预期类型为“ id”

来自分类Dev

如何将排序接口实现类型作为函数参数传递?

来自分类Dev

我可以将基类类型作为通用参数传递给接口吗

来自分类Dev

将UITextDelegate类型的ViewController作为参数传递

来自分类Dev

将枚举类型作为可选参数传递

来自分类Dev

接口类型推断

来自分类Dev

Typescript将未知类型转换为接口类型

来自分类Dev

将具体的实现类型转换为通用接口类型

来自分类Dev

在这里将构造函数参数从接口类型转换为具体类类型是否错误?

来自分类Dev

Typescript-根据参数返回通用接口类型

来自分类Dev

比较开放通用参数和开放通用接口类型

来自分类Dev

将lambda函数作为参数传递给需要接口的方法

来自分类Dev

将scala函数作为java函数接口参数传递

来自分类Dev

将lambda函数作为参数传递给需要接口的方法

来自分类Dev

无法将子接口作为C#中的参数传递

来自分类Dev

将 JSON 分配给接口类型的数组

来自分类Dev

将类型参数传递给基类的接口

来自分类Dev

如何角色使用c#IList接口类型或其他接口作为类型?

来自分类Dev

如何角色使用c#IList接口类型或其他接口作为类型?

来自分类Dev

无法将子类型列表传递到接口类型列表(由子类型实现)到 Visual Basic 中的函数 + 也不能强制转换

来自分类Dev

解组为接口类型

来自分类Dev

解组接口类型

来自分类Dev

ICollectionView接口类型的变量

来自分类Dev

接口类型的Java队列

Related 相关文章

  1. 1

    将接口类型作为参数传递

  2. 2

    Java:为什么使用通用功能比将接口类型作为功能参数更好?

  3. 3

    如何检查接口类型的联合参数

  4. 4

    Java-冲突的接口类型参数

  5. 5

    Java-冲突的接口类型参数

  6. 6

    无法按值将接口类型为'NSString'的对象传递给可变参数函数;格式字符串的预期类型为“ id”

  7. 7

    如何将排序接口实现类型作为函数参数传递?

  8. 8

    我可以将基类类型作为通用参数传递给接口吗

  9. 9

    将UITextDelegate类型的ViewController作为参数传递

  10. 10

    将枚举类型作为可选参数传递

  11. 11

    接口类型推断

  12. 12

    Typescript将未知类型转换为接口类型

  13. 13

    将具体的实现类型转换为通用接口类型

  14. 14

    在这里将构造函数参数从接口类型转换为具体类类型是否错误?

  15. 15

    Typescript-根据参数返回通用接口类型

  16. 16

    比较开放通用参数和开放通用接口类型

  17. 17

    将lambda函数作为参数传递给需要接口的方法

  18. 18

    将scala函数作为java函数接口参数传递

  19. 19

    将lambda函数作为参数传递给需要接口的方法

  20. 20

    无法将子接口作为C#中的参数传递

  21. 21

    将 JSON 分配给接口类型的数组

  22. 22

    将类型参数传递给基类的接口

  23. 23

    如何角色使用c#IList接口类型或其他接口作为类型?

  24. 24

    如何角色使用c#IList接口类型或其他接口作为类型?

  25. 25

    无法将子类型列表传递到接口类型列表(由子类型实现)到 Visual Basic 中的函数 + 也不能强制转换

  26. 26

    解组为接口类型

  27. 27

    解组接口类型

  28. 28

    ICollectionView接口类型的变量

  29. 29

    接口类型的Java队列

热门标签

归档