私が達成しようとしていることを言葉で正確に説明できないかもしれませんが、このサンプルコードは次のことができると思います。
class A
{
public string Name
{
get;
set;
}
public virtual void Say()
{
Console.WriteLine("I am A");
Console.Read();
}
public bool ExtendA;
public A GetObject()
{
if (ExtendA)
return new B();
return this;
}
}
internal class B : A
{
public override void Say()
{
Console.WriteLine(string.Format("I am {0}",Name));
Console.Read();
}
}
class Program
{
static void Main(string[] args)
{
var a = new A() {ExtendA = true,Name="MyName"};
A ab = a.GetObject();
}
}
上記のコードのように、フィールドExitend Aがtrueに設定されていて、同じオブジェクトのインスタンスから同じタイプのオブジェクトを取得しようとすると、オブジェクトが取得されますが、プロパティ'Name'の値が失われます。
Aのプロパティを持つクラスBをどのように戻すことができますか?
ありがとう