【发布时间】: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