.NET如何判断泛型的类型?

文西 发布于 2012/02/23 11:09
阅读 5K+
收藏 0
if(Records.GetType().Equals(typeof(List<InList_RiskHandleRecordGo3>)))
这样判断是不行的   因为总是为false
// if (Records == null || Records.Count == 0)
//     return RecordType.Unknown;

// if (Records[0].GetType().Equals(typeof(InList_RiskHandleRecordGo3)))
//     return RecordType.Go3;

// else if (Records[0].GetType().Equals(typeof(InList_RiskHandleRecordGo4)))
//     return RecordType.Go4;

这样也不行   因为如果记录路面没有值的话  他就不能判断这个   但是实际上我在初始化Records的时候  就是用的具体的某一个子类来作为这个T来初始化的。

请大家指点一下

加载中
0
绿悠悠
绿悠悠

type.FullName.StartsWith("System.Collections.Generic.List`1")

表示类型为List泛型且泛型参数有1个

文西
文西
没有用 只是判断出他是List而已 而我是要判断T的类型
0
鉴客
鉴客
既然是泛型就是为了不需要关心具体的类型,现在却要判断T的类型,这个。。。
0
鉴客
鉴客
在 Java 里可以拿出 List<T> 中的一个对象,然后调用 .getClass().getName() 来获取类名,不晓得 .NET 怎么搞
0
红薯
红薯

http://zhidao.baidu.com/question/58532120.html?fr=qrl&cid=869&index=5

这里有个答案不知道是否可行

class Myclass<T>
{
//.......
在这里面用一个方法判断当前T的类型?
下面是实例的int型。在这里用什么方法可以判断出来
//在这加个方法,返回类型 
public Type GetItemsType
{
return typeof(T);
}
}
0
Monkey
Monkey

class ListA<T  extends A> extends ArrayList<T>{}这样可以定义一个A的子类的泛型。这样可以解决部分问题。你可以再A这个类里指定一个方法返回到底是什么类型。

0
周翼翼
周翼翼

泛型好像不是这么用的.

为每个具体的类型实现各个方法就可以了.

0
阿飞哥
阿飞哥

红薯真是有问必答啊,太慈爱了

我终于知道很多人喜欢这个社区并推荐我来的原因了 红薯更像一个程序员而不是商人 更能代表程序员的梦想 真的顶死你了。

0
文西
文西

引用来自“红薯”的答案

http://zhidao.baidu.com/question/58532120.html?fr=qrl&cid=869&index=5

这里有个答案不知道是否可行

class Myclass<T>
{
//.......
在这里面用一个方法判断当前T的类型?
下面是实例的int型。在这里用什么方法可以判断出来
//在这加个方法,返回类型 
public Type GetItemsType
{
return typeof(T);
}
}

这个是能解决问题  但是需要我每次都为这个List类写扩展方法或者继承再添加自定义的这个方法   总的来说还是相对比较麻烦

 

不过   听说红薯的专攻方向是java  能对.NET的问题还如此上心    是真的谢谢

返回顶部
顶部