我有一個接受接口的方法的基類。我想在子類中找到與此接口最匹配的方法。例如:基於C#中基類動態參數調用的子類查找方法
abstract class Base<T>
{
public T Get(IParam parameter){
return Provide(parameter as dynamic);
}
public abstract T Provide(IParam parameter);
}
class Impl<string> : Base<string>
{
public string Provide(IParam parameter)
{
return "default value";
}
public string Provide(ParamImplementation1 parameter)
{
return "value for implementation 1";
}
public string Provide(ParamImplementation2 parameter)
{
return "value for implementation 2";
}
}
不幸的是,每次都會返回默認值。當實際實現在子類中時,似乎動態關鍵字不起作用。有什麼辦法讓這個工作?
動態關鍵字這裏沒有任何區別,抽象方法的實現必須完全有其相同的簽名。這就是爲什麼每次只調用Provide(IParam參數),並且在這種情況下永遠不會改變。 – 2014-10-27 14:58:01
「ParamImplementation1」和「ParamImplementation1」的重載不是基本抽象類的一部分,所以當「Base」調用Provide時,它只會返回它知道的IParam版本。 – DavidG 2014-10-27 15:03:07