Переопределить статические поля в производных / вложенных классах в C#

У меня есть класс со статическим полем и статической функцией, например, вот так

public class A {
    protected static string[] _eventField = new[] { "SomeValue" };

    public static TOut DoSomethingThatDependsOnEventField(TIn input){
        //output depends on input and the static _eventField
    }

    public class Nested1: A {
        protected new static string[] _eventField = new[] { "SomethingDifferent" };
    }

    public class Nested2 : A {
        protected new static string[] _eventField = new[] { "SomethingElse" };
    }
}

Типы вывода и ввода этого статического метода здесь не важны, единственное, что важно, это то, что вывод - несмотря на то, что он зависит от ввода - конечно, зависит от содержимого статического поля. Реализация метода вообще не меняется в производных классах, и все, что я хочу, это изменить это очень статичное поле. Но всякий раз, когда я делаю звонок как

var res1 = A.Nested1.DoSomethingThatDependsOnEventField(...);

или var res2 = A.Nested2.DoSomethingThatDependsOnEventField(...);

неверное статическое поле из базового класса A указывается в методе. То есть предполагаемое "сокрытие" / "переопределение" статического поля через protected new static string[] _eventField = ... не работает - Почему это так?

1 ответ

У вас не может быть объекта, связанного со Статическим полем / элементом / функцией, поэтому статическое поле / элемент / функция также не может быть отображено в Inheritance.

Другие вопросы по тегам