我正在构建一个可以添加自定义用户bot的棋盘游戏.
根据界面定义机器人行为和决策:
public interface IBotPlayer { ..... voID Init(); PlayResult Play(tableState tableState) ; ..... }
其他用户可以在我在主应用程序中动态加载的外部程序集中实现该接口.
Assembly assembly = Assembly.Loadfile("externallib.dll");foreach (var botPlayerType in assembly.GetTypes().Where(t => t.IsClass && t.IsAssignableFrom(typeof(IBotPlayer))){ .......... // Execution on a new thread th // Now I wanna run it in some kind of sandBox with very limited right,no disk access,no network,... IBotPlayer botPlayer = Activator.CreateInstance<IBotPlayer>(botPlayerType); botPlayer.Init() ; ........}
>好像IBotPlayer实现应该只是算法,是否可以仅使用集合来限制执行线程? **如果是的话怎么样?
解决方法 这个答案正是你所需要的! https://stackoverflow.com/a/5621587/2687006我自己玩代码并且可以说,上面答案中棘手的部分是从受限制的appdomain执行沙箱.然后,SandBoxer使用不受信任的代码加载dll并执行.
总结以上是内存溢出为你收集整理的c# – 限制动态加载程序集的执行全部内容,希望文章能够帮你解决c# – 限制动态加载程序集的执行所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)