0

コンテキスト:ユーザーが遊んで楽しんでいただけるように、私は単純な言語の通訳を書いています。ゲームのmodとして実行されます。ダイナミックを使用できない理由は、ゲームがUnity3dで実行されているためです。これは、.net 3.5(ダイナミックを持たない)と同等のバージョンのMonoを実行します。

ここで質問があります。値をオブジェクトとして保存します。式を評価するとき(たとえば、追加するとき)、「オブジェクト+オブジェクト」を実行しようとすると問題が発生します。これどうやってするの?

1つの解決策は、各オブジェクトに対して大規模なスイッチブロックを実行し、その型をチェックして、それが基本値型(int、long、doubleなど)であるかどうかを確認し、そうである場合は、その型にキャストして追加することです。基本的な値型でない場合は、各型でop_Additionメソッドを探し、存在する場合はそれを呼び出します。

これは、各オペレーターに対してこれを非常に迅速に実行する多くのコードになる可能性があります。より良い、コピー&ペーストの少ない方法があるかどうか疑問に思います。(最適な解決策は、いくつかの.netライブラリ関数ですがobject Add(object, object)、それは期待できます)

4

1 に答える 1

1

必要な操作を定義するオブジェクトのインターフェイスを定義してから、格納されているすべてのオブジェクトがそのインターフェイスを実装していることを確認できます(おそらく単純型をラップします)。

于 2013-02-23T18:21:01.443 に答える