2 回答
TA贡献1911条经验 获得超7个赞
首先,你应该像这样使你的界面协变。
public interface IDataPointProcessor<in T> where T : DataPointInputBase
{
DataPointOutputBase GetOutput(T input);
}
您应该检索由 实现的类型IDataPointProcessor<>,然后您应该创建检索类型的实例并调用泛型类型的方法。
Type genericType = typeof(IDataPointProcessor<>);
var types = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(s => s.GetTypes())
.Where(p => genericType.IsAssignableFrom(p) && !p.IsAbstract).ToList();
var dependedGenericType = genericType.MakeGenericType(typeof(DataPointInputBase));
var method = dependedGenericType.GetMethod("GetOutput");
var instance = Activator.CreateInstance(types[0]);
method.Invoke(instance, new object[] { new DataPointInputBase() });
- 2 回答
- 0 关注
- 186 浏览
添加回答
举报