如何在单独的解决方案仍需要相同的解决方案时共享它们

时间:2017-01-20 15:06:10

标签: c# serialization .net-core

无法从一个C#解决方案序列化对象,然后将其保留并使用其他解决方案进行提取,然后在另一个解决方案中直接反序列化为相同的对象类型。

当将对象传递给它的持久位置时,它还会使用原始命名空间保持其对象类型,这与我尝试将其重新/序列化为共享公共对象的命名空间明显不同,因为它们是不同的解决方案(即使类具有相同的属性和相同的名称)。

共享类,引用公共类和/或链接类似乎不是解决方案(除非我做错了),因为当它选择备份时它仍然看到父命名空间不同,因为它们是从不同的解决方案,所以它在尝试反序列化时会出错,因为它认为它是一个不同的类型。

原因 - 能够将其直接反序列化为原始对象类型,但是在不同项目的解决方案中。

任何见解或建议表示赞赏。谢谢

环境:Visual Studio 2015,.NET Core,C#(在控制台应用程序中测试)

3 个答案:

答案 0 :(得分:2)

您可以创建一个类库并在项目之间共享它,也可以将对象序列化为JSON并在每一侧都有相应的类。

您没有提到您使用的序列化机制,但我认为它是您正在使用的二进制序列化。如果需要二进制序列化,则共享的类库是您的最佳选择。

答案 1 :(得分:1)

创建Class Library(适用于.Net Core)项目。创建要在项目之间传输的类(或要共享的接口或其他内容)。

然后在每个需要该类的项目中添加对该库的引用。使用库命名空间添加using指令,您可以使用这些类。

答案 2 :(得分:1)

如果您不想共享课程,或者您需要其他选项,那么您可以使用不关心原始类型的Serializatoin / Deserialization机制,而是使用与数据的兼容性。与默认情况下的Json.Net类似。

在一个解决方案中进行序列化:

var jsonSerializedString = JsonConvert.SerializeObject(myObjectInAssemblyA);

其他解决方案中的反序列化:

objectInAssemblyB = JsonConvert.DeserializeObject<ObjectClassName>(jsonSerializedString);