了解类型参数是不是在 c# 2.0 中实现接口的更简单方法是啥?

Posted

技术标签:

【中文标题】了解类型参数是不是在 c# 2.0 中实现接口的更简单方法是啥?【英文标题】:What is the easier way to know if a type param implements an interface in c# 2.0?了解类型参数是否在 c# 2.0 中实现接口的更简单方法是什么? 【发布时间】:2010-09-10 21:29:06 【问题描述】:

例如,给定一个类型参数方法,我正在寻找类似粗体部分的东西

void 我的方法() if ( typeof(T).Implements( IMyInterface ) )

  //Do something   

其他

  //Do something else 

也欢迎使用 C# 3.0 的回答,但请先放弃 .NET 2.0 的回答;)

【问题讨论】:

【参考方案1】:

Type.IsAssignableFrom

if(typeof(IMyInterface).IsAssignableFrom(typeof(T)))

  // something

else

  // something else

【讨论】:

【参考方案2】:

我觉得

if (typeof (IMyInterFace).IsAssignableFrom(typeof(T))

应该也可以:但我没有看到优势......

【讨论】:

【参考方案3】:

Ï刚刚尝试使用

if( typeof(T).Equals(typeof(IMyInterface) ) 
     ...

而且也有效,但是您的答案似乎更可靠,并且是我想要的。谢谢!

【讨论】:

有吗?它应该只对 T 起作用,特别是 IMyInterface 在我的具体情况下它对我有用,但行为是你描述的行为:如果你想知道一个对象是否实现 IMyInterface,它不起作用,而是断言类型 T 是一个IMyInterface。谢谢指正!

以上是关于了解类型参数是不是在 c# 2.0 中实现接口的更简单方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

当两个方法同名但参数不同时如何在VB.Net中实现一个接口

当两个类型参数在C#中实现公共接口时,如何将泛型强制转换为它实现的接口

C#里partial关键字的作用

C#里partial关键字的作用(转摘)

在 C# 中实现接口与显式实现接口 [重复]

PHP中实现函数重载