Я читаю ответы и до сих пор не понимаю проблемы!
В чем проблема с приведенным выше кодом?
Кроме того, из комментариев я понимаю, что вам нужно только сериализовать базовый класс. Я думаю, что нет проблем, для начала. Посмотрите на пример -
class A
{
public int a = -1;
};
class B : A
{
public int b = 0;
};
class Program
{
static void Main(string[] args)
{
A aobj = new B();
aobj.a = 100; // <--- your aobj obviously cannot access B's members.
Console.In.ReadLine();
}
}
Теперь, если вы должны сделать вашу сериализованную функцию виртуальной, тогда да, есть проблема. Тогда это может помочь -
abstract class Ia
{
public abstract void Serialize();
}
class A : Ia
{
public int a = -1;
sealed public override void Serialize() {
Console.Out.WriteLine("In A serialize");
}
};
class B : A
{
public int b = 0;
/*
* Error here -
public override void Serialize()
{
Console.Out.WriteLine("In B serialize");
}
*/
//this is ok. This can only be invoked by B's objects.
public new void Serialize()
{
Console.Out.WriteLine("In B serialize");
}
};
class Program
{
static void Main(string[] args)
{
A aobj = new B();
aobj.Serialize();
Console.In.ReadLine();
}
}
//Output: In A serialize