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()});