当前位置:编程学习 > C#/ASP.NET >>

如何判断一个type是list呢?

Expression<Func<TSource, TResult>> transform

但是我想根据TSource的不同采用不同的transform

TSource可以是List<T>也可以就是简单的T

那如何判断TSource是不是List呢?

谢谢! --------------------编程问答-------------------- if(TSource is System.Collections.IList) --------------------编程问答-------------------- 因为List和List<T>都实现了System.Collections.IList接口,你可以判断是否实现这个接口。实现了。就是List,不论是否是泛型的List. --------------------编程问答-------------------- ls的头像真是  --------------------编程问答--------------------
引用 2 楼 kissxyl 的回复:
因为List和List<T>都实现了System.Collections.IList接口,你可以判断是否实现这个接口。实现了。就是List,不论是否是泛型的List.


如果TSource可以是CustomDefinedType<T>也可以就是简单的T, 而不是一个List呢? --------------------编程问答-------------------- 那有什么关系。看你要什么了。你自己说要判断是不是List类型。那1,2楼给出的就是答案了。
关键是你的问题是什么,如果是“那如何判断TSource是不是List呢?”那1,2楼就是答案了。 --------------------编程问答--------------------

var type=typeof(TSource);
type.你找找相关的方法
--------------------编程问答--------------------
引用 5 楼 wuyazhe 的回复:
那有什么关系。看你要什么了。你自己说要判断是不是List类型。那1,2楼给出的就是答案了。
关键是你的问题是什么,如果是“那如何判断TSource是不是List呢?”那1,2楼就是答案了。


不好意思没说清楚, 其实我的问题是

如果TSource可以是CustomDefinedType<T>也可以就是简单的T,那么如何判断究竟是哪个呢?

谢谢各位! --------------------编程问答-------------------- 居然看不懂题目了,难道我老了?
楼主,如果如何说别人都不明白的时候,尝试贴一些代码来说明下. --------------------编程问答-------------------- Class MyType1<T>
{
   T data;
}

Class MyType2<T>
{
   T data;
}


我有一个transform (Expression<Func<TSource, TResult>> transform), 这个transform根据不同的TSource,有不一样的结果

比如TSource如果是MyType1,那么transform就是 transform1
   TSource如果是MyType2,那么transform就是 transform2

我想知道如何判断TSource是MyType1还是MyType2。

谢谢各位拉!头疼阿!





TSource --------------------编程问答-------------------- 不太懂,学习 --------------------编程问答-------------------- if (transform.GetType().Name=="MyType1`1")
{
}
else if (transform.GetType().Name=="MyType2`1")
{
}
--------------------编程问答-------------------- List和List<T>时两回事。先把这个概念整利索。 --------------------编程问答--------------------
引用 11 楼 showlin 的回复:
if (transform.GetType().Name=="MyType1`1")
{
}
else if (transform.GetType().Name=="MyType2`1")
{
}

有错,没太注意你的transform是一个delegate
判断FullName吧
大概会以这么个东西开头的
if (transform.GetType().FullName.StartWith("
System.Linq.Expressions.Expression`1[[System.Func`2[[ConsoleApplication4.MyType1`1"))
{

}

比较Dirty的写法,不知道优雅点的 --------------------编程问答--------------------
引用 12 楼 sp1234 的回复:
List和List<T>时两回事。先把这个概念整利索。


List和List<T>不同。但是因为都实现了非泛型的IList接口,就偷懒转换了,一视同仁的同样的方式处理。

--------------------------------------------
我有一个transform (Expression<Func<TSource, TResult>> transform), 这个transform根据不同的TSource,有不一样的结果

比如TSource如果是MyType1,那么transform就是 transform1
  TSource如果是MyType2,那么transform就是 transform2

我想知道如何判断TSource是MyType1还是MyType2。

这种情况最好是写函数重载
或是我没理解,你这个transform(transform)是嵌套调用还是说transform表示前面的,还是参数里面的? --------------------编程问答--------------------
引用 14 楼 wuyazhe 的回复:
引用 12 楼 sp1234 的回复:
List和List<T>时两回事。先把这个概念整利索。


List和List<T>不同。但是因为都实现了非泛型的IList接口,就偷懒转换了,一视同仁的同样的方式处理。

--------------------------------------------
我有一个transform (Expression<Func<TSource, ……


if(typeof(TSource) = typeof(MyType1)) //... --------------------编程问答--------------------
引用 15 楼 idot 的回复:
if(typeof(TSource) = typeof(MyType1)) //...

如果是这样,就如我14楼说的,写重载就可以了。
transform (Expression<Func<MyType1, TResult>> transform) 
transform (Expression<Func<MyType2, TResult>> transform) --------------------编程问答-------------------- 问题是我要先判断TSource究竟是不是MyType1还是MyType2

typeof(TSource) == typeof(MyType1) 
是肯定不工作的。 --------------------编程问答-------------------- if ( TSource is MyType1)
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,