C# наследование обман с иерархией
У меня есть ряд организаций. По сути, все они имеют общую базу, и тогда каждый класс объявит имя и идентификатор. Каждый производный класс получит предыдущее имя и идентификатор.
Мне нужно, чтобы производный класс мог показывать свойство Name унаследованного класса. Я пытаюсь использовать base.Name в аксессоре get. Не работает.
Я использую NHibernate, поэтому свойства должны быть виртуальными. Это может быть проблемой.
Я пытался "спрятать" свойство Name с помощью "new", но затем я думаю, что 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 для возврата юрисдикции.Name
Я гуглил и stackrued и не могу найти ответы.. Спасибо за помощь
РЕДАКТИРОВАТЬ для ясности:
Мне нужны классы, чтобы выглядеть так.
- Район -> Имя, DistrictId, ConferenceId, ConferenceName, JurisdictionId, JurisidictionName
- Конференция -> Имя, ConferenceId, JurisdictionId, JurisdictionName
- Юрисдикция -> Имя, Юрисдикция Id
1 ответ
Я полагаю, что ваша проблема в том, что вы можете быть смущены тем, как работает наследование. Свойство Name, которое вы используете для идентификации ConferenceName, будет таким же, как и название района.
Вам нужна структура классов, в которой вы либо включаете экземпляр класса Conference в District, либо копируете ConferenceName в свойство District без ссылки на базу.
Обновление, чтобы отразить обсуждение комментариев:
public class District : Conference
{
public virtual string ConferenceName {get;set;}
public virtual string DistrictId {get;set;}
}