私は、次のものが含ま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'を受け取ります。著者が何をするか)。ここで問題となるのは、 'Animal'を作成した場合、抽象的な動物を作成することです。それはちょうど種類がないモデルです。あなたが男について話すならば、あなたは「ジョン」を意味するわけではありません - あなたは抽象的な人を意味します。私はそれが意図だったとはかなり確信していますが、あなたの例からは少し不明であると思いました。 – Archeg
@Archeg:もちろん、あなたは完全に正しいです。私は私の例を修正し、いくつかのフレームワーククラスを使うことに決めました。 – Heinzi