ok Im back with another question... It seems you when you assign base objects as another object , the base object is turned into that object, but still is without its properties for example.

```
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" 

}
}

```

Of course, the compiler can't find "Begin()" since begin doesn't originally exists in MyBaseObject.
I'm doing a conversion between a custom language similar to Ruby to C#(above), but this Ruby-like language doesn't come across this "problem" I'm having. It seems to compile it. Is there something in .NET4 that can solve this issues that I'm forgetting?