了解类型参数是不是在 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 中实现接口的更简单方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章