首先,如果已經詢問過,請致歉。我很難將問題轉化爲文字。所以如下面的代碼片段所示,我有一個接口ISomeInterface
,它有一個功能CalculateSomething
,它的參數爲ICalculationInput
。我有多種類型實現ISomeInterface
,並且每個實現都需要與CalculateSomething
略有不同的參數。因此CalculateSomething
接受ICalculationInput
而不是具體參數。現在在函數CalculateSomething
的每個實現中,在使用它之前,我不得不將它強制轉換爲特定類型,這會使代碼變得有點難看。我想聽聽你對如何重新設計這個問題的意見,所以我不需要投入參數,所以我可以避免運行時錯誤,並且在幾年後再次讀取我的代碼時不會感到尷尬。在功能接受基本類型中處理der types類型
interface ISomeInterface
{
void CalculateSomething(ICalculationInput input);
}
class SpecificClass : ISomeInterface
{
public void CalculateSomething(ICalculationInput input)
{
var spInput = ICalculationInput as SpecificInput;
if(spInput == null) throw ...
}
}
爲什麼總是需要使用'SpecificInput'?然後將接口改爲'CalculateSomething(SpecificInput input)' – 2014-12-03 11:35:53
如果你不會爲幾年前寫的代碼感到尷尬,那麼你的學習不夠充分......;) – 2014-12-03 11:36:06
@TimSchmelter我有不同的ISomeInterface實現和每個實現有自己的輸入參數類型派生自ICalculationInput – v1p3r 2014-12-03 11:40:28