0

我有一个层次结构的组织。基本上,它们都共享一个共同的基础,然后每个类都将声明一个名称和 ID。每个派生类都会选择以前的名称和 ID。

我需要派生类能够显示继承类的 Name 属性。我正在尝试在 get 访问器中使用 base.Name .. 似乎不起作用。

我正在使用 NHibernate,所以属性必须是虚拟的。这可能是个问题。

我试图通过使用“新”来“隐藏” Name 属性,但后来我认为 base.Name 是新版本。

等级制度是这样的……

    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

我用谷歌搜索和stackoverflowed,找不到答案。谢谢你的帮助

为清楚起见编辑:

我需要这些类看起来像这样。

  • 区 -> 名称、DistrictId、ConferenceId、ConferenceName、JurisdictionId、JurisidictionName
  • 会议 -> 名称、ConferenceId、JurisdictionId、JurisdictionName
  • 管辖权 -> 名称,管辖权 ID
4

1 回答 1

1

我相信您的问题是您可能对继承的工作方式感到困惑。您用来标识 ConferenceName 的 Name 属性将与 District 的名称相同。

您需要一个类结构,其中您可以在 District 中包含一个 Conference 类的实例,或者将 ConferenceName 复制到 District 的一个属性中而不引用 base。

更新以反映评论讨论:

 public class District : Conference
    {
       public virtual string ConferenceName {get;set;}
       public virtual string DistrictId {get;set;}
    }
于 2011-11-08T02:13:45.283 回答