C#では、次の方法を見つけたいと思います。
(cast_by_variable)some_class.some_method();
そこで、どういうわけか、子クラスの型を判別し、その情報を変数に格納して、親クラスがキャストを使用するときにそれを使用したいと思います。
あなたが提案しているようなc#での直接のランタイムキャストはありませんが、この問題の回避策があります。次のことができます。
Type t = some_class_obj.GetType();
object result =t.GetMethod("some_method").Invoke(some_class_object,new object[]{parameter1,parameter2});
Object obj;
if (some_class is Class1)
{
obj = (Class1)some_class;
// do something with obj
}
オブジェクトをキャストしても型は変わらないので、いつでも決定できます
some_class.GetType();
Type type = some_class.GetType();