Как унаследовать несколько свойств от базового класса - PullRequest
0 голосов
/ 03 января 2019

Я столкнулся со сценарием, в котором я должен унаследовать только несколько свойств от базового класса и оставить другие свойства такими, как есть.

Так, например,

class A
{
    public string A1
    public string A2
}

class B : A
{
    public string A3;
    public string B1;
}

Теперь я должен бытьвозможность использовать свойства, такие как B.A1, B.B1 и B.A3, но я не хочу, чтобы A2 был доступен в классе B ***.Помните, я не хочу использовать приват ***, я должен держать его публичным, потому что это документ сущности монго и должен храниться в базе данных монго

В основном я пытаюсь поделиться несколькими общимисвойства между двумя объектами, использующими наследование.

Ответы [ 3 ]

0 голосов
/ 03 января 2019

Вы можете скрыть публичные переменные, скрыв их от приватных.

class Base {
    public string P1 { get; set; }
    public string P2 { get; set; }
}

class Limited: Base {
    new private string P1 { get; set; }
    // P2 will be inherited as public, P1 will be hidden to the user
}

Хотя я бы сделал шаг назад и рассмотрел бы инкапсуляцию вместо наследования. Это прятки с атрибутами свойств пахнет.

0 голосов
/ 03 января 2019

Хорошо, если мы не хотим, чтобы свойство A2 было доступно из производного класса B, мы (скорее всего) не следует использовать наследование в первую очередь. Мы могли бы использовать агрегацию вместо:

class A
{
    public string A1 { get; set; }
    public string A2 { get; set; }
}

class B
{
    public string A1 { get; set; }
    public string A3 { get; set; }
    public string B1 { get; set; }

    public B(A instance)
    {
       this.A1 = instance.A1;
    }
}
0 голосов
/ 03 января 2019

Рефакторинг.

class AA
{
    public string A1 { get; set; }
}

class A : AA
{
    public string A2 { get; set; }
}

class B : AA
{
    public string A3  { get; set; }
    public string B1  { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...