2011-11-08 69 views
0

我有一個組織的hiearchy。基本上,他們都有一個共同的基礎,然後每個班級將聲明一個名稱和ID。每個派生類將獲取以前的名稱和ID。c#遺傳欺騙與層次

我需要派生類能夠顯示繼承類的Name屬性。我試圖在get訪問器中使用base.Name ..似乎沒有工作。

我使用NHibernate所以屬性必須是虛擬的..這可能是一個問題。

我試圖通過使用「新」來隱藏Name屬性,但我認爲base.Name是新版本。

的hiearchy看起來像這樣...

public class Base 
    { 
     public virtual string Name {get;set;} 
     public virtual string Website {get;set;} 
    } 
    public class Jurisdiction : Base 
    { 
     public virtual string JurisdictionId {get;set;} 
    } 
    public class Conference : Jurisdiction 
    { 
     public virtual string JurisdictionName {get{ return base.Name; }} 
     public virtual string ConferenceId {get;set;} 
    } 
    public class District : Conference 
    { 
     public virtual string ConferenceName {get {return base.Name; }} 
     public virtual string DistrictId {get;set;} 
    } 

我需要..

  • District.ConferenceName返回Conference.Name
  • Conference.JurisdictionName返回Jurisdiction.Name

我google和stackoverflowed並找不到答案..謝謝爲幫助

編輯清晰:

我需要的類,看起來像這樣。

  • 區 - >名稱,DistrictId,ConferenceId,ConferenceName,JurisdictionId,JurisidictionName
  • 會議 - >名稱,ConferenceId,JurisdictionId,JurisdictionName
  • 管轄權 - >名稱,JurisdictionId
+0

請澄清你的問題。對我來說,你似乎只需要覆蓋會議中的名稱屬性返回一個新的獨特的名字,但這似乎很簡單。 – Polity

回答

1

我相信你的問題是你可能會對繼承的工作方式感到困惑。您用來識別會議名稱的名稱屬性將與該區域的名稱相同。

您需要一個類結構,您可以在區中包含Conference類的實例,或者將ConferenceName複製到District的屬性中而無需引用基礎。

更新,以反映意見的討論:

public class District : Conference 
    { 
     public virtual string ConferenceName {get;set;} 
     public virtual string DistrictId {get;set;} 
    } 
+0

這是一個奇怪的情況,我們從我們的CRM數據庫爲我們的網站創建了一個面向前臺的數據庫。我們會「平整」表格,並在一天中頻繁地提取數據。有一個實例會工作,但我不想這樣做。我怎樣才能把財產複製過來? – Brandon

+0

而不是讓ConferenceName引用基本Name屬性,將其更改爲直接獲取/設置器(即公共虛擬字符串ConferenceName {get; set;})。 –

+0

會議桌有一個名稱列,但會議名稱用於分區表時,它是會議名稱。似乎有辦法做到這一點.. – Brandon