我有以下设置:
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# 中的工作原理?