簡體   English   中英

實例化實現接口C#的通用類型

[英]Instantiate a generic type which implements an Interface C#

我有以下通用類型:

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,...]]'的構造函數”

該錯誤表明您正在嘗試構造CommandFlow<DynamicFlow>類型的對象,因此nominalFlowType必須為DynamicFlow

當您嘗試將StaticFlow作為構造函數參數傳遞時,沒有任何構造函數可以做到這一點。 您需要傳遞DynamicFlow值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM