祝大家好!以多種類似方法避免重複代碼(C#)
我在C#中有一些(可能會有幾十個)非常類似的方法。它們都內置於幾乎相同的圖案:
ResultObjectType MethodX(...input parameters of various types...)
{
nesting preparation code here...
{
{
resultObject = ExternalClass.GetResultForMethodX(input parameters of MethodX);
}
}
nesting result processing code here ...
return resultObject;
}
重複/相同的部分:ResultObjectType,準備代碼,結果處理代碼。
不同部分:ExternalClass調用方法,輸入參數集(輸入參數數量,類型)。
重要:我不是在方法簽名的控制 - 無法進行更改。
我試圖避免重蹈類似代碼的所有塊像這樣的東西:
ResultObjectType MethodX(...input parameters of various types...)
{
return UniversalMethod(
new ExternalMethodDelegate(ExternalClass.GetResultForMethodX),
input parameters of MethodX...);
}
ResultObjectType UniversalMethod (Delegate d, input parameters of various types...)
{
nesting preparation code...
{
{
resultObject =
(d as ExternalMethodDelegate)(same input parameters as above);
}
}
nesting result processing code...
return resultObject;
}
到目前爲止,我只設法使它在這樣的情況下,所有參數都具有相同的已知類型的工作在編碼時。在嘗試用泛型代表來解決這個問題之後,我開始認爲這是無法實現的。即使我的代碼編譯時,它在運行時也不起作用。任何接受者?在此先感謝您的幫助!
您的預處理和後處理代碼是否完全相同,以及他們是否在輸入參數周圍進行計算?所有方法的輸入參數在類型和順序上是否相同> – aqwert 2011-05-05 02:46:00