我看過How can I create an instance of a derived class from an instance of a base class and include private fields?和Create an instance of derived class from the base class但是我沒有得到它,或者他們不是我想要的。如何從基類的實例初始化派生類的實例?
我有一個類,從另一個導出的,也實現特定接口:
public class DerivedClass : BaseClass, IDerivedClass
BaseClass
實現IBaseClass
和IDerivedClass
繼承IBaseClass
。
有時,我希望能夠初始化派生類,當我已經有一個基類的實例。我可以創建一個構造函數,將基礎實例中的每個屬性簡單複製到派生類實例的屬性中,但是還有其他方法嗎?一些沿線:
BaseClass bc = new BaseClass();
DerivedClass dc = new DerivedClass() : bc;
這是可行的嗎?如果不是,爲什麼不呢?我準備接受這可能是不可能的,但如果有的話,如果有人能解釋爲什麼,我會非常感興趣。
這是行不通的,因爲你不能設置派生類的屬性,當你不知道'T'。換句話說,在這個方法中,你只能設置基類的屬性。 – Maarten
據我所知,這正是詹姆斯德克爾試圖實現的目標。 – wertzui