当前位置:  开发笔记 > 编程语言 > 正文

获取Generic参数的类型

如何解决《获取Generic参数的类型》经验,为你挑选了1个好方法。

我有以下课程

public interface InterfaceBase
{
}

public class ImplementA:InterfaceBase
{
}

public class ImplementB:InterfaceBase
{
}

public void TestImplementType(T obj) where T: InterfaceBase
{
}

如何推断T是SolidA还是ImplementB?我试着用

typeof(T) is ImplementA

但是这个表达式总是被评估为false.

编辑:我如何将obj转换为ImplementA或ImplementB?



1> Marc Gravell..:

严格来说,你应该避免在泛型中过多的专业化.将任何专用逻辑放在接口上的成员中会更加清晰,因此任何实现都可以采用不同的方式.但是,有很多方法:

你可以测试"obj"(假设它是非null)

    bool testObj = obj is ImplementA;

你可以测试T是typeof(ImplementA):

    bool testEq = typeof(T) == typeof(ImplementA);

同样,您可以将其作为ImplementA或子类进行测试:

    bool testAssign = typeof(ImplementA).IsAssignableFrom(typeof(T));

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有