我有兩個班,一個繼承了其他的,例如: -從繼承的類的實例易於轉換
public class A
{
public string AA { get; set; }
public double AB { get; set; }
}
和
public class B : A
{
public double? BA { get; set; }
}
現在,我知道,如果我有一個實例對象B,我可以將它轉換爲類型A,但我有一個A的實例,我想實例化爲類型B對象。我知道我可以在B的類中放置一個構造函數來複制所有的屬性值,但是基類A有很多屬性,並且可能會添加更多的屬性,所以我擔心會丟失一個或忘記添加它當我將它添加到A中時,它是否是B的構造函數?有沒有簡單的方法可以做到這一點?
------- ------編輯
感謝鄉親們,不是我的用例不幸的是,這是一個伴侶的我開除的問題。據我所知,有問題,他不能改變基類。據我所知,基類是一個掛鉤到數據庫調用的基類,然後他想要獲取這些數據併爲管理員編輯屏幕添加一些額外的屬性,然後他的代碼將用它來更新基礎數據對象的屬性。我的第一反應是將基礎對象作爲對象的一個屬性,但是有一個原因讓他使用他正在使用的工具「扁平化」要容易得多。我沒有認爲有這樣做的方式,但我認爲我會檢查以防我失去了一些東西 - 我認爲只是詢問基本問題會更容易,而不是包括背景,可能只是提出更多的問題和渾水(AFAIK他患有「無法控制的情況」)。
嗯,這不是你應該做的一切,往往擺在首位。這是大多數情況下潛在設計問題的一個標誌。你有可能會更好地使用組合而不是繼承。 B類應該有A類型的字段,而不是繼承它。 – Servy
這是純粹的設計瘋狂。 – Arran
這裏的實際用例是什麼?這通常表明您需要重新考慮設計。可能有更好的基本方法。 –