首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较开放泛型参数和开放泛型接口类型

比较开放泛型参数和开放泛型接口类型
EN

Stack Overflow用户
提问于 2015-09-24 11:53:39
回答 1查看 325关注 0票数 0

是否可以(在c#中)比较一个开放的泛型参数,例如T

代码语言:javascript
复制
public void CompareMethod<T>() { ... }

使用开放的泛型接口(或类)的类型?

下面是一个示例接口:

代码语言:javascript
复制
public interface IExample<T> { }

然后以某种方式在方法中像这样比较它们:

代码语言:javascript
复制
public void CompareMethod<T>()
{
    if (typeof(IExample<>) == typeof(T))
    {
        //execute
    }
}

当调用这样的方法时,if主体将不会执行:

代码语言:javascript
复制
CompareMethod<IExample<object>>();

重要的是,我不知道在CompareMethod的开放泛型参数中将输入哪些封闭类型。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-24 12:04:29

您需要在GetGenericTypeDefinition()上调用T,以便能够将其与IExample<>进行比较

代码语言:javascript
复制
public void CompareMethod<T>()
{
    if (typeof(T).IsGenericType && 
        typeof(T).GetGenericTypeDefinition() == typeof(IExample<>)) {
    {
        //execute
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32760640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档