1

私はある種の楽しい「コンテスト」をまとめようとしています。開発者は、ゲームをプレイするボットを作成します。おそらく、ブラックジャックとマスタープログラムがゲームをホストし、ボットを互いに対戦させます。

私は以前にそのようなことに参加したことがありますが、「ホスト」アプリケーションに関与したことはありません。そして、私はそれをどうやってやるのかわかりません。

これはVB.Netで行います

さまざまな人々が独自のボットを作成します-私が定義する特定のインターフェースを実装するように彼らに要求したいと思います。彼らはそれをDLLにコンパイルし、それを私に送信します。ゲームプレイを進めるには、ホストに異なる「ボット」DLLのそれぞれで同じメソッドを呼び出させる必要がありますが、それを行うのに問題があります。

これを行うための最良の方法は何ですか?

4

4 に答える 4

3

リフレクション API を使用してアセンブリを読み込みます。次に、定義した基本クラスまたはインターフェイスから継承する型が見つかるまで、そのアセンブリ内の型を繰り返します。次に、そのインスタンスを作成し、メソッドの呼び出しを開始します:-)

サンプル ドキュメントから:

Imports System
Imports System.Reflection

Class Class1
    Public Shared Sub Main()
        Dim SampleAssembly As [Assembly]
        ' You must supply a valid fully qualified assembly name here.            
        SampleAssembly = [Assembly].Load("Assembly text name, Version, Culture, PublicKeyToken")
        Dim Types As Type() = SampleAssembly.GetTypes()
        Dim oType As Type
        ' Display all the types contained in the specified assembly.
        For Each oType In Types
            Console.WriteLine(oType.Name.ToString())
        Next oType
    End Sub 'LoadSample
End Class 'Class1

タイプを取得したら、Activatorを使用してインスタンスを作成できます。

于 2009-05-08T20:36:45.937 に答える
2

Managed Extensibility Frameworkを見てください。インターフェイス (または基本クラス) を簡単に作成でき、Export 属性を実装に追加するだけで済みます。ディスカバリとインジェクションのすべてを無料で利用できます。

于 2009-05-08T21:03:59.040 に答える
1

ああ、そのアイデアは、.NET のごく初期の頃の記憶を思い起こさせます。コードには 1 つか 2 つの重要なビットが含まれていると思います。

于 2009-05-08T20:50:47.153 に答える
1

どれだけ現実的になりたいかによって、Visual Studio 2008 と連携し、シミュレーターを含むMS Robotics Studioをいつでも活用できます。リーグもあります。

于 2009-05-08T20:53:40.220 に答える