可能我无法用语言准确解释我想要实现的目标,但我认为这个示例代码可以做到:
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 时,当我再次尝试从同一对象实例获取相同类型的对象时,我得到了该对象,但它丢失了属性“名称”的值。
有什么建议我怎样才能返回具有 A 属性的 B 类?
谢谢