的類型/字符串名稱我有UDataModel
類型的一個可變objDataModel
其是從AbstractDataModel
類型轉換使用
public class AbstractDataModel
{
internal string SomeName { get; set; }
}
public class UDataModel: AbstractDataModel
{
}
public class FDataModel: AbstractDataModel
{
}
public class UCommandProcessor : AbstractCommandProcessor<UDataModel>
{
}
public class FCommandProcessor : AbstractCommandProcessor<FDataModel>
{
}
public abstract class AbstractCommandProcessor<TDataModel> :SomeInterface<TDataModel>
where TDataModel: AbstractDataModel
{
}
繼承我有使用其中我能夠創建其對象類型UDataModelType即var tDataModelType= typeOf(UDataModel)
的變量。
var tDataModel = (AbstractDataModel)Activator.CreateInstance(tDataModelType);
我有一個類型的變量UCommandProcessor即var processorType= typeOf(UCommandProcessor)
我能夠創造的
var processor = Activator.CreateInstance(processorType);
對象,但我不能把它強制轉換成UCommandProcessor 當我試圖
var processor = (AbstractCommandProcessor<AbstractDataModel>)Activator.CreateInstance(processorType);
我收到了例外
無法投射'ABC.Domain.UCommandProcessor'類型的對象以鍵入 'ABC.Common.Contract.AbstractCommandProcessor`1 [ABC.Common.Contract.AbstractDataModel]'。
有沒有像
var processor = (AbstractCommandProcessor<typeOf(tDataModel)>)Activator.CreateInstance(processorType);
任何方法,即使我不能做喜歡
var processor = (AbstractCommandProcessor<typeOf(tDataModel)>)Activator.CreateInstance(processorType);
'UserDataModel'應該是'UDataModel'還是那兩種不同的類型? – 31eee384
更新了問題,對不起造成的困惑 –