Добрый день, у меня довольно простой вопрос к опытным программистам C #. По сути, я хотел бы иметь абстрактный базовый класс, который содержит функцию, основанную на значениях дочерних классов. Я пробовал код, подобный следующему, но компилятор жалуется, что SomeVariable имеет значение null, когда SomeFunction () пытается его использовать.
Базовый класс:
public abstract class BaseClass
{
protected virtual SomeType SomeVariable;
public BaseClass()
{
this.SomeFunction();
}
protected void SomeFunction()
{
//DO SOMETHING WITH SomeVariable
}
}
Детский класс:
public class ChildClass:BaseClass
{
protected override SomeType SomeVariable=SomeValue;
}
Теперь я ожидаю, что когда я сделаю:
ChildClass CC=new ChildClass();
Необходимо создать новый экземпляр ChildClass, и CC запустит свою унаследованную SomeFunction с использованием SomeValue. Однако это не то, что происходит. Компилятор жалуется, что SomeVariable является нулевым в BaseClass. Возможно ли то, что я хочу сделать, даже в C #? Я использовал другие управляемые языки, которые позволяют мне делать такие вещи, поэтому я уверен, что я просто делаю здесь простую ошибку.
Любая помощь очень ценится, спасибо.