Важно: я не могу использовать свойства, мне нужно сериализовать поле. C# 6.0
Все просто, поле определено в базовом классе, а другой класс наследует это поле от базового класса. Поле в подклассе меняет его тип - важно, чтобы тип всегда был enum, но сериализация зависит от типа enum, поэтому он должен быть строго типизирован. Затем изменение значения в базовом классе ожидает того же самого изменения в подклассе, вызывая некоторый метод в подклассе. Этого не происходит, потому что поле помечено как новое, поэтому у него есть собственное распределение памяти. Как изменить это поведение, не сообщая подклассу значение клона?
enum Foo { };
enum Bar { };
abstract class Base
{
protected Foo someEnum;
public void Load(int someVal)
{
someEnum = (Foo)someVal;
}
}
class Child : Base
{
public new Bar someEnum;
}
class Program
{
void Main()
{
var c = new Child();
c.Load(7);
Assert((int)c.someEnum == 7);
}
}