C# 实例化实现接口C的泛型类型
我有以下泛型类型:C# 实例化实现接口C的泛型类型,c#,generics,interface,C#,Generics,Interface,我有以下泛型类型: public class CommandFlow<T> : IFlow where T: IFlow { private T _flow; public CommandFlow(T flow) { _flow= flow; } } 我得到一个错误: 找不到类型为“CommandFlow`1[[DynamicFlow,…]]”的构造函数 该错误表示您正在尝试构造CommandFlow类型的对象,因此nomin
public class CommandFlow<T> : IFlow where T: IFlow
{
private T _flow;
public CommandFlow(T flow)
{
_flow= flow;
}
}
我得到一个错误:
找不到类型为“CommandFlow`1[[DynamicFlow,…]]”的构造函数
该错误表示您正在尝试构造CommandFlow类型的对象,因此nominalFlowType必须是DynamicFlow
当您试图将StaticFlow作为构造函数参数传递时,没有任何构造函数可以这样做;您需要传递一个DynamicFlow值。我假设在这种情况下,nominalFlowType是StaticFlow类型,因为这是您传递给构造函数的类型?nominalFlowType可以是三种实现的流类型中的任意一种:静态、动态、组合。在这种情况下是动态流动所以你是故意的?混合使用DynamicFlow和StaticFlow?所以基本上你是在模仿这个:new CommandFlow new StaticFlow?这行吗?你的代码还不够完整。添加nominalFlowType的声明,并确保整个声明是正确的,并且在发布之前使用相同的类型/变量进行编译。
var flowType = typeof(CommandFlow<>).MakeGenericType(nominalFlowType);
//nominalFlowType is one of the types: StaticFlow, DynamicFlow, CombinedFlow
var commandFlow = Activator.CreateInstance(flowType, new object[] {new StaticFlow()});