У меня есть абстрактный класс, где в конструкторе я вызываю абстрактный метод, объявленный в том же классе, и я делаю это, потому что я хочу заставить весь производный класс не только реализовать мой абстрактный метод, но иназовите это (я думаю, что именно здесь появляется шаблонный метод).
Кстати: я знаю, что это не лучший подход, чтобы гарантировать, что все вещи будут написаны правильно, но из-за внешних проблем я хотел бы свести к минимумумои будущие проблемы с плохой реализацией.Ниже приведен фрагмент кода:
public abstract class Generic
{
public Generic()
{
Console.WriteLine("This is the generic");
this.SetRules();
}
protected abstract void SetRules();
}
Что ж, на одном из моих производных классов нужно установить в объявлении частную переменную, и я хотел бы использовать эту переменную внутри переопределенного метода.Поскольку я не знаю, сколько возможностей мне понадобится для каждого из моих производных классов, я хотел бы объявить его внутри каждого из моих производных классов по мере необходимости.Пример ниже:
public class Derivated2 : Generic
{
private int _parameter;
public Derivated2(int parameter)
{
this._parameter = parameter;
}
protected override void SetRules()
{
int x = 0;
x = 1 + 3;
Console.WriteLine(String.Concat("This is the derivated2 with x: ", x, "; _parameter: ", _parameter));
}
}
Теперь к проблеме;
Когда я вызываю свой класс производного2, я не могу использовать / увидеть значение моей переменной, указанное в объявлении:
public static void Main()
{
Derivated2 _class1 = new Derivated2(2);
}
Мой вывод:
This is the generic
This is the derivated2 one with x: 4; _parameter: 0
Как я могу увидеть / использовать мою переменную в переопределенном методе asbtract?Если я не могу, какой будет наилучший подход для достижения моей цели, и будет вызываться защита метода SetRules независимо от того, что делает разработчик, а также может использовать закрытые переменные внутри своего производного класса?
Вотполный код, который я сделал:
Вызов SetRules для абстрактного универсального класса
Вызов SetRules для производного класса