C#通过反射失去实体类的Type,如果将Type传入泛型方法
C#通过反射得到实体类的Type,如果将Type传入泛型方法
我有个实体类User,和一个泛型方法GetEntity<T>(),我只知道实体类的程序集frame.dll文件,还已知实体类的类名称(一个类名的字符串),我需要将这个实体类当作泛型T传入泛型方法GetEntity<T>()
目前我通过反射dll得到实体类的Type,但是无法将Type当作T传给泛型方法。
------解决思路----------------------
这样写吧
------解决思路----------------------
楼主对泛型的理解有问题,感觉上是把一个类型传入泛型,其实是把两个类型组合成一个新的类型,
而新的类型是必须用源代码写过编译才有的,不是在运行过程中动态组合而成的.
这是我的理解.
我有个实体类User,和一个泛型方法GetEntity<T>(),我只知道实体类的程序集frame.dll文件,还已知实体类的类名称(一个类名的字符串),我需要将这个实体类当作泛型T传入泛型方法GetEntity<T>()
目前我通过反射dll得到实体类的Type,但是无法将Type当作T传给泛型方法。
//实体类
public partial class User
{
public int ID { get; set; }
public string UserName { get; set; }
public string LoginName { get; set; }
public string Password { get; set; }
}
string EntityName="User"; //已知实体类名称
Assembly ass = Assembly.LoadFrom(AppDomain.CurrentDomain.BaseDirectory + "bin\\frame.dll"); //加载dll
Type t = ass.GetType("frame.Models." + EntityName); //获取类型
object model= Activator.CreateInstance(t); //创建实例
//User user=GetEntity<User>(1);//我想实现这句话的效果
public T GetEntity<T>(int id) where T : class
{
return repository.Find<T>(id);
}
------解决思路----------------------
dynamic obj = GetEntity<Object>(1);
这样写吧
------解决思路----------------------
楼主对泛型的理解有问题,感觉上是把一个类型传入泛型,其实是把两个类型组合成一个新的类型,
而新的类型是必须用源代码写过编译才有的,不是在运行过程中动态组合而成的.
这是我的理解.