[英]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.