コンテキスト:ユーザーが遊んで楽しんでいただけるように、私は単純な言語の通訳を書いています。ゲームのmodとして実行されます。ダイナミックを使用できない理由は、ゲームがUnity3dで実行されているためです。これは、.net 3.5(ダイナミックを持たない)と同等のバージョンのMonoを実行します。
ここで質問があります。値をオブジェクトとして保存します。式を評価するとき(たとえば、追加するとき)、「オブジェクト+オブジェクト」を実行しようとすると問題が発生します。これどうやってするの?
1つの解決策は、各オブジェクトに対して大規模なスイッチブロックを実行し、その型をチェックして、それが基本値型(int、long、doubleなど)であるかどうかを確認し、そうである場合は、その型にキャストして追加することです。基本的な値型でない場合は、各型でop_Additionメソッドを探し、存在する場合はそれを呼び出します。
これは、各オペレーターに対してこれを非常に迅速に実行する多くのコードになる可能性があります。より良い、コピー&ペーストの少ない方法があるかどうか疑問に思います。(最適な解決策は、いくつかの.netライブラリ関数ですがobject Add(object, object)
、それは期待できます)