【问题标题】:.NET fiddle error when invoking Castle Windsor调用温莎城堡时出现 .NET 小提琴错误
【发布时间】:2014-11-12 17:09:59
【问题描述】:

我正在尝试使用 dotnetfiddle 来演示一个简单的 Castle Windsor 边缘案例。

当它试图运行这段代码时:

             var container = new WindsorContainer()
                         .Register(Component.For<TestClass>()
                                     .LifeStyle.Singleton
                                     .OnDestroy(t => t.ByeBye())
                                   );

我们得到一个错误:

运行时异常(第 42 行):继承安全规则被违反,而 压倒性成员: 'Castle.MicroKernel.DefaultKernel.InitializeLifetimeService()'。 覆盖方法的安全可访问性必须与 被覆盖的方法的安全可访问性。

堆栈跟踪:

[System.TypeLoadException:继承安全规则被违反,而 压倒性成员: 'Castle.MicroKernel.DefaultKernel.InitializeLifetimeService()'。 覆盖方法的安全可访问性必须与 被覆盖的方法的安全可访问性。] 在 Program.Main(String[] args):第 42 行

我们可以让 Castle Windsor 在 .NET fiddle 中运行吗?

.NET fiddle 分享在这里:https://dotnetfiddle.net/crBGpt

【问题讨论】:

标签: c# castle-windsor .net-fiddle


【解决方案1】:

这确实与 .netFiddle 的中等信任度有关。如果你真的需要在中等信任下运行它,你可以modify the code

我建议不要在中等信任下测试代码的 Castle 部分,而是专注于应用程序的移动部分,将 Castle 行为留给自己的测试(您可以在另一台机器上运行)

【讨论】:

  • 在 .NET Fiddle 中,您将库作为 Nuget 包包含在内,并针对它编写一个 sn-p 代码。修改库代码不是本练习的选项,除非我创建 Windsor 的新分支并以某种方式将其公开为包。遗憾。 :-(
  • 我知道这一点;如果您需要在 Medium Trust 中使用 Castle Windsor,则必须更改代码。如果不只是在 .net fiddle 中测试 Castle 之外的组件
  • 作为另一种选择,您可以通过 Medium Trust 支持向 Castle 提出拉取请求,但不确定他们是否会接受。我们可以使用 Mono Cecil 为导入的 NuGet 程序集即时更新安全设置,并允许它在中等信任下执行,但如果程序集使用需要 FullTrust 的东西,那么它将无济于事。所以不幸的是,有些包不能在.Net Fiddle上执行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多