【问题标题】:JsonConvert and NServiceBus namespace conflictJsonConvert 和 NServiceBus 命名空间冲突
【发布时间】:2014-05-29 17:20:07
【问题描述】:

我们有一个使用 Json.Net 和 JsonConvert 的项目。

在我们决定将 NServiceBus 序列化更改为 Json 之前,它工作得很好。

现在我们收到一条错误消息,指出 JsonConvert 是一个内部类并且“无法在此处访问”。

查看生成的代码,看起来 NServiceBus 在其代码中嵌入了 JsonConvert。此嵌入代码具有 Newtonsoft.Json 命名空间,但将 JsonConvert 类设为内部。

有没有办法告诉编译器使用来自程序集 Newtonsoft.Json.dll 的 NewtonSoft.Json.JsonConvert 而不是在特定类的 NServiceBus.Core.dll 中?

【问题讨论】:

  • 您是否尝试进行完全合格的通话?例如:NewtonSoft.Json.JsonConvert convert = new .... ?
  • @Gusman - 是的。问题是两者都称为 Newtonsoft.Json.JsonConvert。它们只是在不同的程序集中。 Visual Studio 首先找到由 NServiceBus 更改的那个。 (在我看来,如果你要嵌入一个库并改变它,你应该改变命名空间,这样就不会发生这种情况。)
  • 他们确实应该这样做。作为最后的希望,您可以手动加载所需的程序集,然后使用 CreateInstance 创建序列化程序,但是您将通过反射调用其方法,因为您无法通过冲突的命名空间进行强制转换。
  • 我无法复制这个。你可以在某个地方上传一个复制品吗?
  • @Simon - 有问题的应用程序很大。而且我们只使用 JSON 来序列化日志记录。我们放弃了 JSON 库,因为它不值得这些问题。

标签: c# .net namespaces .net-4.5 nservicebus


【解决方案1】:

是的,你可以。
你需要使用extern alias,见http://msdn.microsoft.com/en-us/library/ms173212.aspx

【讨论】:

    猜你喜欢
    • 2014-07-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 2010-11-15
    • 2012-12-18
    • 2012-02-06
    相关资源
    最近更新 更多