私は C# で簡単なゲーム エンジンを作成しています (VB 2008 で、ほとんどが自分用です)。グラフィックスなどを処理するメイン アプリケーションがあり、実際のゲームのほとんどのデータは、ゲーム デザイナーに提供するツールで生成された dll に格納されます。
C# がスクリプティングに最適であるということはよく耳にします (そして、C# は他のどの方法よりも私のニーズに合っているようです)。私はこの問題に遭遇しました:
メインの exe のソース コードを公開したくないのは明らかですが、スクリプトに必要なすべての主要なメソッドが含まれています (メインの exe で動作するため)。
親exeで呼び出すメソッドの定義がない場合、どのようにdllを生成できますか? メインのexeには、それを使用するための依存関係としてdllがあります。つまり、dll は、ループを引き起こす exe に依存することはできません。
exe とライブラリの両方が使用する別の dll を作成できますが、そこにあるメソッドはそれを使用するメインの exe に直接作用できません。
私が思いついた唯一の論理的な解決策はこれです:
- 私が必要とするクラスの骨組みを備えた dll。
- ゲームデータを含む dll。これには、dll A から継承されたクラスがあります。
- Exe は A と B の両方に依存します。B にある A メソッドをオーバーライドして、本来の動作をさせます。
ただし、これはあまりエレガントではないようです。
疲れて読み進める前に、研究で多くの単語 (MAF、MEF、Roslyn など) を見てきました。私はこれだけで数時間を費やしました。
あなたの意見では、これを行うにはどうすればよいですか? 私が見落としているものはありますか?