我有包含以下C#程序的一个问题:如何向下转换由静态方法生成的实例?
class Program
{
static void Main(string[] args)
{
Child childInstance = Child.ParseFromA(@"path/to/Afile") as Child;
}
}
class Parent{
int property;
public static Parent ParseFromA(string filename)
{
Parent parent = new Parent();
// parse file and set property here...
return parent;
}
}
class Child : Parent
{
public void SomeAdditionalFunction() { }
}
当运行该代码,childInstance
变得null
。
我试过下面明确的转换任务,但有一个例外结束:
Child childInstance = (Child)Child.ParseFromA(@"path/to/Afile");
因为我想分析某些类型的文件到Parent
和Child
情况下,我想保留通过生成实例设计静态方法。
我该如何得到一个合适的childInstance
?
谢谢!你的解决方案正是我想要做的! 我应用了它,并完美的工作。 – Malboma99
关于你的例子只是一个小问题:将一个'Animal'转换成'Cat'是完全理智的:如果它是一个'Cat',你会收到一个'Cat',如果它不是(null)什么作者)。这里的问题是,如果你创建一个“动物”,你创建一个抽象的动物,不能成为一只猫。这是一个没有一种类型的模型。如果你谈论一个男人,你不是指“约翰”, - 你是指一个抽象的男人。我很确定那是有意的,但我认为从你的例子来看有点不清楚。 – Archeg
@Archeg:你当然是完全正确的。我修改了我的示例,并决定使用一些框架类。 – Heinzi