我正在開發一個使用Robocode-like編程模型的遊戲(C#):參與者繼承基類並添加策略行爲。遊戲然後加載參與者的課程實例,並開始比賽。不幸的是,參與者可以通過在他們競爭對手的實例之間共享靜態變量來「作弊」。如何防止.NET運行時中的靜態變量共享?
如何防止.NET語言中Class實例之間的靜態變量共享?我知道這是通過每個實例使用單獨的ClassLoader在Java中完成的。什麼是.NET等價物?
在此先感謝...
注意的解決方案:我的測試表明,單獨的AppDomain只加載擴展MarshalByRefObject的類時工作。我猜這是有道理的 - 如果你只是加載一個Serializable類,那麼Class就會被複制到當前的AppDomain中,所以來自另一個AppDomain的第二個對象將共享它的靜態變量。 MarshalByRefObject保證只有一個代理被加載到當前AppDomain中,並且靜態在加載AppDomain中保留。另請參閱:http://blogs.msdn.com/ericlippert/archive/2004/05/27/143203.aspx
不會阻止競爭對手互動(即競爭)嗎? – 2008-09-17 15:50:12