yanda22 Ответов: 1

Как я могу гарантировать, что только некоторые из моих дочерних классов наследуются от родительского класса


Я только хочу, чтобы данные из основного/родительского класса были унаследованы дочерними классами соответственно

Что я уже пробовал:

Объявление моих переменных как частных

1 Ответов

Рейтинг:
0

OriginalGriff

Вы не можете выбрать, какие классы могут наследовать базовый класс или какие его "части" они наследуют, кроме как с помощью private (нет доступа), protected (любой производный класс), internal (только в пределах одной сборки), private protected (производный, но должен быть в одной сборке - c#7.2 и далее) в качестве модификатора доступа для класса / свойств.

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

public interface IDontThrowException { }
public class IsAllowed : MyClass, IDontThrowException { }
public class IsntAllowed : MyClass { }
Тогда в вашем классе
private int result = 666;
public int GetIfAllowed
    {
    get
        {
        if (!(this is IDontThrowException)) throw new ApplicationException("Not allowed");
        return result;
        }
    }

private void MyButton_Click(object sender, EventArgs ew)
    {
    MyClass allowed = new IsAllowed();
    MyClass notAllowed = new IsntAllowed();
    Console.WriteLine(allowed.GetIfAllowed);     // Fine
    Console.WriteLine(notAllowed.GetIfAllowed);  // Throws an exception.

Это отвратительный способ делать вещи, но.....