我想要实现的是一个具有以下功能的插件系统:
在我的搜索过程中,我发现大多数SO解决方案涉及代码访问安全性,据我所知,从.NET 4.x开始已经过时了.我还在MSDN页面上阅读了一些关于新安全模型的内容,看来有必要公开受保护资源的库代码 ; 但是,我找不到任何显示如何应用此类代码的示例.我的猜测是,它将涉及创建单独的AppDomains并可能使用Principal权限,但这就是我所知道的.
另外,我还发现只提到强烈命名的集会,但我不相信这就足够了.如果我没有弄错的话,强大的命名优势之一就是插件开发人员可以通过使用自己的私钥对组件哈希进行签名来证明自己的身份,而其他人可以使用知名且可信的公钥进行检查.然而,仅此一点似乎太不灵活,因为它要么要求开发人员亲自决定应该信任哪些代码,要么只信任任何学会签署其程序集的人.
我将非常感谢使用最新安全模型的安全管理代码的一个很好的例子.我目前的想法:
当然,如果它以更好的方式实现目标,欢迎您建议另一种架构.
因此,使用全新的C#6,我们获得了那些整洁的自动属性初始化器.我想我也可以利用这些来制作比以往更简洁的单身人士.显然其他人也有这个想法.
public sealed class Singleton
{
public static Singleton Instance { get; } = new Singleton();
private Singleton() { /* some initialization code */ }
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
(它可能看起来与这个问题类似,但事实并非如此)