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