我想構建一個泛型類型,它將在初始化類型T1的實例並在其方法中接受類型T2的實例時接受。
所以,現在我有一個通用的方法,在可接受的類型有一個約定 - 是某種抽象類的孩子,我有這個抽象類型實例的內部集合:
瞭解使用泛型方法/類型時的類型分配
private readonly IList<Tuple<CommandBase<SocialNetworkUnit, SocialNetworkUnit>, SocialNetworkUnit>> _history;
public bool Invoke<TInitiator, TParameter>(CommandBase<TInitiator, TParameter> command, TParameter parameter)
where TInitiator : SocialNetworkUnit
where TParameter : SocialNetworkUnit
{
var success = command.Run(parameter);
this._history.Add(new Tuple<CommandBase<SocialNetworkUnit, SocialNetworkUnit>, SocialNetworkUnit>(command, parameter));
}
但是我有一個編譯錯誤說TInitiator和TParameter參數(傳統給SocialNetworkUnit)不能用於收集。
Argument 1: cannot convert from 'CommandUnits.CommandBase<TInitiator,TParameter>' to 'CommandUnits.CommandBase<Command.SNUnit.SocialNetworkUnit,Command.SNUnit.SocialNetworkUnit>'
你能告訴我我的錯誤嗎?
感謝
這隻會使它在運行時失敗。 (或者簡單地說它總是'空',因爲你錯誤地使用了'as'。) – Servy 2015-02-23 21:42:59