Robocode-likeプログラミングモデルを使用するゲーム(C#)で作業しています。参加者は基本クラスを継承し、戦略的な振る舞いを追加します。その後、ゲームは参加者のクラスのインスタンスを読み込み、競争が始まります。残念なことに、参加者は、競合クラスのインスタンス間で静的変数を共有することによって、 "不正行為"することができます。.NETランタイムでの静的変数の共有を防止するにはどうすればよいですか?
.NET言語でのクラスインスタンス間の静的変数の共有を防止するにはどうすればよいですか。これは、インスタンスごとに別々のClassLoaderを使用することで、Javaで実現されることがわかります。 .NETと同等のものは何ですか?ソリューションに事前に
おかげで...
注:私のテストは、MarshalByRefObjectをを拡張するクラスをロードするときに、別のAppDomainにのみ動作することを示しています。これは意味があると思います。シリアライザブルクラスをロードするだけであれば、クラスは現在のAppDomainにコピーされ、別のAppDomainの2番目のオブジェクトが静的な変数を共有するようになります。 MarshalByRefObjectは、現在のAppDomainにプロキシだけがロードされ、スタティックはロード中のAppDomainの後ろにとどまることを保証します。以下を参照してください。http://blogs.msdn.com/ericlippert/archive/2004/05/27/143203.aspx
競合他社の相互作用(競合)を妨げるものではありませんか? –
いいえ、さまざまなappdomain間でインターフェイスをマーシャリングし、通信がインターフェイスの提供するものだけに制限されるためです。 –