2016-04-21 3 views
0

Есть ли способ, с помощью которого я могу дать некоторые свойства дочернему классу?использовать некоторые свойства из класса в каждом дочернем классе

У меня есть сценарий, в котором весь дочерний класс содержит свойства из базы, но не для всех свойств.

Пусть у меня есть свойства для всех классов

public string AAAAA { get; set; } 
public string ABbbb { get; set; } 
public string ACCCCC { get; set; } 
public string ADDDDDD { get; set; } 
public string AEEEEE { get; set; } 
public string BBBBBB { get; set; } 
public string BBBAAA { get; set; } 
public string CCCCAAA { get; set; } 
public string DDDAAAA { get; set; } 

, где в классе AI только хочет

AAAAA

BBBAAA

свойство, в классе BI хотят каждые свойства , в классе C требуется только

ACCCCC

BBBAAA

и так далее .. есть ли способ, с помощью которого я делаю это?

+1

Нет. Чтобы решить вашу проблему, вы должны «предпочесть композицию над наследованием». – gdir

+2

Кажется, у вас нет базового класса, у вас есть кухонная раковина. –

+1

Нет, это гласит концепцию ООП. Скорее создайте другие классы с группами свойств, которые вы хотите, и используйте их в своих классах. – Nitin

ответ

-2

Вы можете использовать модификаторы, такие как частные, общедоступные и т. Д., Чтобы участники могли получать доступ из дочерних классов. После того, как базовый класс имеет членов с общедоступными, внутренними или защищенными модификаторами, вы не можете скрыть их из классов родства. Все братья и сестры будут иметь доступ к этим членам. В вашем случае вы должны поставить общих членов в базовый класс и поместить всех остальных в свой класс.

Поскольку вы не можете использовать множественное наследование в C#, вы можете либо использовать композицию, либо помещать сущности-конкретные члены в свои собственные классы, как описано выше.

3

Я думаю, что вы хотите достичь что-то вроде этого:

public interface ITypeAny 
{ 
    string MyCommonProperty { get; set; } 
} 

public interface ITypeA : ITypeAny 
{ 
    string AAA { get; set; } 
} 

public interface ITypeB : ITypeAny 
{ 
    string BBB { get; set; } 
} 

public abstract class TypeAny : ITypeAny 
{ 
    public string MyCommonProperty { get; set; } 
} 

public class TypeA : TypeAny, ITypeA 
{ 
    public string AAA { get; set; } 
} 

public class TypeB : TypeAny, ITypeB 
{ 
    public string BBB { get; set; } 
} 

Таким образом, вы можете иметь общие свойства для всех дочерних классов (вы видите их как ITypeAny) и в то же время имеет специфический свойства для некоторых ваших дочерних классов (в этом случае вы должны увидеть их как ITypeA или ITypeB).

0

Другие ответы велики, поскольку они пытаются помочь вам, не обращая внимания на отсутствие конкретных примеров. Этот ответ пытается быть прямо вверх. Ваш вопрос:

Есть ли способ, с помощью которого я могу дать некоторые свойства дочернему классу?

У меня есть сценарий, в котором весь дочерний класс содержит свойства из базы, но не для всех свойств.

Нет, нет никакого способа, чтобы сделать дочерний класс наследует только некоторые свойства из базового класса.

Вы должны переосмыслить свой дизайн и, возможно, вернуться к конкретному конкретному вопросу. (Также, возможно, у вас есть XY-problem?)

Смежные вопросы