已经解决.
很么情况?
@小眼睛老鼠: 通过Type创建泛型对象时,需要传入类型参数集constructed,否则无法转换
实现类转换成泛型接口
这就有点扯了 这里好像既不是 协变也不是逆变
要能转的前提是 至少这个你要转的类是继承的父子关系
按你的说法 好像不是父子关系
您看一下类图中,是继承关系,请问你有什么解决方案吗?
@杨璞: 你报错的是那一段?
public static IRule<T> Create<T>(string name) where T : IEntity { var types = AppDomain.CurrentDomain.Load(name) .GetTypes().Where(n => n.GetInterface(typeof(IRule<T>).Name) != null); return Activator.CreateInstance(types.FirstOrDefault()) as IRule<T>; }
FYI
高手,您好,非常感谢您的热心回答,但这段代码还是存在一点小问题,请看下图:
请不吝赐教!谢谢!
@杨璞: 上面写的很清楚了 无法创建zhilianzhaopin(智联招聘???)这个对象 因为构造器上有参数 但是你创建的时候 却没有参数
和逆变 协变 半毛钱关系都没有啊
@小眼睛老鼠: 是的,智联招聘,我在写一个爬虫,爬他的数据,写完以后我将会公布出这个程序,以方便大家找到更适合自己的工作.当然是免费的
@小眼睛老鼠: 你有什么解决方案吗?
创建一个实现了泛型接口的类,然后以泛型接口的方式返回
其实在Activator.CreateInstance的时候创建的对象是正确的,但是转换成IResolveRule<T>的时候出错了.
@杨璞: 报错错是creat的时候就是错误的 并不是IResolveRule<T> 的时候报的错
creat的时候 没有输入参数 但是又没有 没有参数的构造器
@杨璞: 错误信息 ,obj的类型 以及 t的类型