私は次の設定をしています:
public abstract class Parent {
// logic for class
public virtual int Value {get;set;}
public Parent(){}
}
public class Child1 : Parent {
// child specific logic here
public Child1 () : base() {
base.Value = 4;
}
}
public class Child2 : Parent {
// child specific logic here
public Child2 () : base() {
base.Value = 6;
}
}
public class RunMe {
Parent p;
public Parent instantiateObject(string s) {
switch(s) {
case "child1":
return new Child1();
break;
default:
case "child2":
return new Child2();
break;
}
}
public RunMe() {
p = instantiateObject("child1");
}
}
これに似たコードを実行すると、Unity force が終了します。C# がサブタイプ ポリモーフィズムをサポートしていることは知っているので、なぜこれが機能しないのかよくわかりません。特別なことでも高度なことでもありません。だから私はとても混乱しています。恥知らずな告白ですが、私は Java キャンプにいて、(無意識に) 自分の Java パラダイムを C# パラダイムに適合させようとしています。私はそれを正しく使用していませんか、それとも C# でサブタイピングがどのように機能するかを理解していませんか?