我想這更一般地寫:實現一個模板接口
public static CormantRadDock RecreateDock(RadDockSetting settings)
{
CormantRadDock dock = new CormantRadDock();
settings.SetSettings(dock);
Logger.DebugFormat("Recreated dock {0}", dock.ID);
return dock;
}
我有這樣的:
public static T Recreate<T>() where T : new()
{
T _control = new T();
//settings.SetSettings(dock);
Logger.DebugFormat("Recreated control {0}", (_control as Control).ID);
return _control;
}
通用的解決方案:
public interface ISetting<T>
{
void SetSettings(T obj);
}
public void SetSettings(CormantRadDock dock)
{
// do stuff with dock
}
謝謝!
你是說第二個SetSettings是覆蓋/實現?你說接口,但是你有一個抽象類,而你在ISetting中的SetSettings是一個通用的方法,而你在下面顯示的SetSettings主體不是。 – 2011-06-10 17:44:16
我目前有第二套SetSettings實施。我想弄清楚如何表達第二個SetSettings,以便它能夠覆蓋抽象的SetSettings,或者...我不確定還有其他的選項。 – 2011-06-10 17:46:26
首先聲明_什麼類型_你想成爲通用的......這裏有兩個候選人,RadDockSetting和CormantRadDock。哪一個應該變成'T'?或者兩者都是'T1'和'T2'? – 2011-06-10 17:50:54