【问题标题】:Castle Dynamic Proxy with Mono 2.10带有 Mono 2.10 的 Castle 动态代理
【发布时间】:2013-02-11 03:01:52
【问题描述】:

我使用 VS 2012/.NET 4.5 构建了一个类库,它使用基于 this article 的 Castle.DynamicProxy 实现延迟加载。它在 .NET 中完美运行,但不适用于 Mono,尽管 documents 特别声明 DynamicProxy 可用于 Mono 2.6 或更高版本。我得到的众多例外之一是:

Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'Castle.Core'.

我是 Mono 新手,所以对于 Mono 专家来说,这可能是显而易见的。我很沮丧:Castle.DynamicProxy 看起来非常适合我当前的项目。任何帮助将不胜感激。

【问题讨论】:

    标签: c# mono castle-dynamicproxy


    【解决方案1】:

    我不会说 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,您将有更多机会无需调查任何内容,因为该错误可能已经修复。

    【讨论】:

    • 感谢您的贡献,但我认为您没有仔细阅读标题。我没有说 Castle 与 Mono 不兼容,我说 Castle.DynamicProxy 与 Mono 不兼容。 Krzysztof Koźmic 证实了这一点,他是 Castle.DynamicProxy 的主要贡献者之一,所以我想我会相信他的话! ;-)
    • 在我说 Castle 的地方,我指的是 Castle.DynamicProxy。 Castle.DynamicProxy 是很多项目的基础,例如 RhinoMocks、FakeItEasy、StructureMap、Castle.Windsor... 说到 Krzysztof,在这里你有他说 Castle.Windsor 兼容单声道:stackoverflow.com/questions/1827157/… ;)
    • 这是一个非常有用的答案,它证实了我的怀疑,而无需花费数小时为自己证​​明。开始游戏!
    • jfyi:在 Mono 3.2.8 下测试了最新 Castle DynamicProxy 和 LinFu Dynamic Proxy 的简单代理案例,它们工作正常,没有任何问题。
    【解决方案2】:

    没关系:我刚收到 Castle 贡献者之一的回复,但文档有误:Castle.DynamicProxy 与 Mono 不兼容。他说他会更改文档,所以希望没有其他人会犯同样的错误!干杯。

    【讨论】:

      猜你喜欢
      • 2011-01-20
      • 2020-05-03
      • 1970-01-01
      • 2011-04-03
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      • 2013-03-06
      • 2012-06-26
      相关资源
      最近更新 更多