获取泛型类型的问题

shuyoufeng 2016-02-28 01:13:30
现遇到这样一种情况,比如:


public abstract class A<T>:List<T>{ }

public class C:A<某种类型>{ }

public class B<T> where T: A {
public Type type{
get{
// TODO: ????????
// 这里我想获取到的类型是泛型类型 A<T>中的 T类型,有什么方法可以实现吗?
// A<T>无法使用反射构造,因为A的构造函数不确定。
}
}
}


...全文
265 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuyoufeng 2016-02-29
  • 打赏
  • 举报
回复
自己解决了,谢谢大家!
devmiao 2016-02-28
  • 打赏
  • 举报
回复
Type.MakeGenericType()
Poopaye 2016-02-28
  • 打赏
  • 举报
回复
return typeof(TList).IsGenericType ? typeof(TList).GenericTypeArguments[0] : null;
shuyoufeng 2016-02-28
  • 打赏
  • 举报
回复
使用正常的面向接口的设计是什么意思? 我现在的需求是这样的: // 有一个实体列表的泛型类: public interface IEntityList { } public class EntityList<TEntity> : IEntityList { } // 有一个实体列表的管理类: public class EntityListManager<TList> where TList : class, IEntityList { Type EntityType { get { // 这里通过这个属性获取 Entity 的类型。 } } } public class Test { public Test() { var entityMgr = new EntityManager<EntityList<Order>>(); var type = entityMgr.EntityType; ......... } }
Poopaye 2016-02-28
  • 打赏
  • 举报
回复
public class B<T> where T: A 这样写根本不能编译,必须指定A的类型 public class B<T> where T: A<T> 或者 public class B<T> where T: A<SomeType>
  • 打赏
  • 举报
回复
实例化对象当然可以获得泛型参数的定义类型。不过你这样做的目的是干什么呢?除了使用反射,就不能使用正常的面向接口的设计了吗?
shuyoufeng 2016-02-28
  • 打赏
  • 举报
回复
楼上的代码获取到的是 B<T> 的类型,我要的是 A<T> 中的 T 类型,也就是List<T>中的T类型。
Forty2 2016-02-28
  • 打赏
  • 举报
回复
get { return typeof(T); }

111,096

社区成员

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

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

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