如何判断一个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的头像真是 --------------------编程问答--------------------
如果TSource可以是CustomDefinedType<T>也可以就是简单的T, 而不是一个List呢? --------------------编程问答-------------------- 那有什么关系。看你要什么了。你自己说要判断是不是List类型。那1,2楼给出的就是答案了。
关键是你的问题是什么,如果是“那如何判断TSource是不是List呢?”那1,2楼就是答案了。 --------------------编程问答--------------------
--------------------编程问答--------------------
var type=typeof(TSource);
type.你找找相关的方法
不好意思没说清楚, 其实我的问题是
如果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>时两回事。先把这个概念整利索。 --------------------编程问答--------------------
有错,没太注意你的transform是一个delegate
判断FullName吧
大概会以这么个东西开头的
if (transform.GetType().FullName.StartWith("
System.Linq.Expressions.Expression`1[[System.Func`2[[ConsoleApplication4.MyType1`1"))
{
}
比较Dirty的写法,不知道优雅点的 --------------------编程问答--------------------
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表示前面的,还是参数里面的? --------------------编程问答--------------------
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#