我使用 VS 2012/.NET 4.5 构建了一个类库,它使用基于 this article 的 CaSTLe.DynamicProxy 实现延迟加载。 .它在 .NET 中完美运行,但不适用于 Mono,尽管 documents特别说明 DynamicProxy 可与 Mono 2.6 或更高版本一起使用。我得到的众多异常(exception)之一是:
Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'Castle.Core'.
我是一个 Mono 菜鸟,所以对于 Mono 专家来说这可能是显而易见的事情。我很沮丧:CaSTLe.DynamicProxy 看起来非常适合我当前的项目。任何帮助将不胜感激。
最佳答案
我不会说 CaSTLe 与 Mono 不兼容。
我实际上将它用于一些项目。我的意思是,我使用使用它的模拟框架。而且效果很好。
CaSTLe 贡献者的实际意思可能是它不能保证 100% 兼容,因为 CaSTLe 套件中的一些单元测试没有通过 Mono 的简单事实。
这些测试未通过的唯一原因是没有人坐下来调查原因并修复 Mono 中的错误。如果有 10 个失败的测试,很可能是 Mono 中有 10 个错误,或者 10 个测试中只有 1 个错误!
鉴于我在 Mono 中使用 CaSTLe 的良好体验,我个人对修复这些错误不感兴趣,因为它们一定只是边缘情况。当我击中它们并且被它们阻止时我会修复它们(就像我对 https://bugzilla.xamarin.com/show_bug.cgi?id=10004 所做的那样),否则不幸的是我没有足够的时间。
这个故事的士气:尝试修复你遇到的 Mono 中的错误(而不是 CaSTLe 遇到的所有错误),这可能需要你 1 或 2 天的调查时间,但稍后你可能会成为之后快乐的 CaSTLe+Mono 用户(和开源贡献者)。
PS:测试 Mono 3.x,你将有更多机会不必调查任何东西,因为错误可能已经修复。
关于c# - 带有 Mono 2.10 的 CaSTLe 动态代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15075942/