我有以下通用类型:
public class CommandFlow<T> : IFlow where T: IFlow
{
private T _flow;
public CommandFlow(T flow)
{
_flow= flow;
}
}
其中IFlow有一些实现:StaticFlow,DynamicFlow,CombinedFlow。我想用Active.CreateInstance实例化泛型类型,所以我有代码:
var flowType = typeof(CommandFlow<>).MakeGenericType(nominalFlowType);
//nominalFlowType is one of the types: StaticFlow, DynamicFlow, CombinedFlow
然后我尝试实例化泛型类型:
var commandFlow = Activator.CreateInstance(flowType, new object[] {new StaticFlow()});
我收到错误:
“类型'构造函数'CommandFlow`1 [[DynamicFlow,...]]'找不到”
答案 0 :(得分:2)
该错误表示您正在尝试构建CommandFlow<DynamicFlow>
类型的对象,因此nominalFlowType
必须为DynamicFlow
。
当您尝试传递StaticFlow
作为构造函数参数时,没有任何构造函数可以执行此操作;您需要传递DynamicFlow
值。