0

わかりました別の質問に戻ります...ベースオブジェクトを別のオブジェクトとして割り当てると、ベースオブジェクトはそのオブジェクトに変わりますが、たとえばそのプロパティはありません。

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の何かがありますか?

4

2 に答える 2