怎样判断一个泛型的数据具体是什么类型?

siaosa 2008-11-12 06:58:02
怎样判断一个泛型的数据具体是什么类型?
如下面的代码
public void AAAA<TSource>(IList<TSource> AList)
{
if (TSource is DbDataRecord) 想判断传递过来的TSource是什么类型? 这样编译不过 this.Text = "Hello";
}
...全文
2076 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
vwxyzh 2008-11-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 siaosa 的回复:]
你们先试下再说吧,你们这样的代码编译都通不过的
[/Quote]
对菜鸟只能说:“。。。。。。。。。。。。。。。。。。。。。。。。。。”
siaosa 2008-11-14
  • 打赏
  • 举报
回复
ojlovecd 你太牛了,这么复杂的关系东西你都搞出来了。
我姓区不姓区 2008-11-13
  • 打赏
  • 举报
回复

static void Main(string[] args)
{
AAAA<string>(new List<string>());
}
public static void AAAA<TSource>(IList<TSource> AList)
{
Type t = Type.GetType(Regex.Match(AList.GetType().FullName.Replace("[[", "[").Replace("]]", "]"), @"\[(?<type>[^\]]+)\]").Groups["type"].Value);
Console.WriteLine(t.FullName);
}

wangping_li 2008-11-13
  • 打赏
  • 举报
回复
你直接的话是访问不了TSource的话
wangping_li 2008-11-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 siaosa 的帖子:]
怎样判断一个泛型的数据具体是什么类型?
如下面的代码
public void AAAA <TSource>(IList <TSource> AList)
{
if (TSource is DbDataRecord) 想判断传递过来的TSource是什么类型? 这样编译不过 this.Text = "Hello";
}
[/Quote]
这样判断算什么意思?
判断TSource的类型直接判断AList就行了,因为AList就是Tsource的类型

public void AAAA<T>(IList<TSource> AList)
{
Type t = AList.GetType();
if (t is 你要判断的类型)
{
//执行
}

siaosa 2008-11-13
  • 打赏
  • 举报
回复
不行,TSource不能用的。你们去试下就知道了
RyanGT 2008-11-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 vwxyzh 的回复:]
严格相等的情况: typeof(TSource) == typeof(DbDataRecord)
支持继承类的情况:typeof(DbDataRecord).IsAssignableFrom(typeof(TSource))
[/Quote]

这个可以.
ICanUseThisID 2008-11-12
  • 打赏
  • 举报
回复
public void AAAA <TSource>(IList <TSource> AList)
泛型函数???
chinawes 2008-11-12
  • 打赏
  • 举报
回复
public void AAAA <TSource>(IList <TSource> AList)
{
Type t = TSource.Gettype();
if (t is DbDataRecord)
{

}
}
siaosa 2008-11-12
  • 打赏
  • 举报
回复
你们先试下再说吧,你们这样的代码编译都通不过的
vwxyzh 2008-11-12
  • 打赏
  • 举报
回复
严格相等的情况: typeof(TSource) == typeof(DbDataRecord)
支持继承类的情况:typeof(DbDataRecord).IsAssignableFrom(typeof(TSource))
xu_2007 2008-11-12
  • 打赏
  • 举报
回复
public void AAAA <TSource>(IList <TSource> AList)
{
if (TSource.Gettype() is DbDataRecord)
}
这样试下看

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧