好的,我带着另一个问题回来了...当您将基础对象分配为另一个对象时,基础对象似乎变成了该对象,但仍然没有它的属性,例如。
public class MyObjectBase {
public void Begin() {
}
{
public class OneOfMyObjects : MyObjectBase {
public void Begin() {
base.Begin();
//do stuff
}
}
public class ManagmentClass {
public MyObjectBase myCurrentObject;
//called a only one when the program starts
public void Start() {
Mymethod(new OneOfMyObjects());
}
//generic method
public void Mymethod<T>(T Objectclass) where T : MyObjectBase {
myObject = Objectclass
myObject.Begin(); // compiler error, non existent in MyObjectBase
myObject.GetType().ToString() //returns "OneOfMyObjects"
}
}
当然,编译器找不到“Begin()”,因为在 MyBaseObject 中最初并不存在 begin。我正在将类似于 Ruby 的自定义语言转换为 C#(上图),但是这种类似 Ruby 的语言并没有遇到我遇到的这个“问题”。它似乎编译它。.NET4 中有什么东西可以解决我忘记的这个问题吗?