我有一個抽象BaseClass,從中繼承了多個派生類。 我想寫一個通用的方法,做一個共同的工作,所以我不需要爲每個派生類編寫該方法。編寫派生類的通用方法
目前代碼 -
public abstract class BaseClass{}
public class Derived1 : BaseClass{
public Derived1 CommonWork(){
/* Common work */
return objDerived1;
}
}
public class Derived2 : BaseClass{
public Derived2 CommonWork(){
/* Common work */
return objDerived2;
}
}
我想要的方式 -
public T CommonWork where T : BaseClass
{
/* Common work */
return T;
}
現在我不知道如何以及在何處寫這個方法。 Coudnt在其他地方找到它。 請建議。由於
不幸的是,這僅適用於繼承的一個水平,因爲沒有辦法一類'SubDerived1'可以從兩個'Derived1'繼承和'BaseClass'。但是,人們可以定義一個協變接口,並且每種類型都可以自行實現。如果一個顯式實現但包含一個在接口上運行的擴展方法,可能會實現正確的語義(讓每個事物的'CommonWork'返回一個適當類型的對象)。 –
supercat
@supercat你是對的。但是OP在他的例子中並沒有要求更高一級的水平。如果他需要更多層次,那麼你的選擇可能是一個解決方案。 –