无法从一个C#解决方案序列化对象,然后将其保留并使用其他解决方案进行提取,然后在另一个解决方案中直接反序列化为相同的对象类型。
当将对象传递给它的持久位置时,它还会使用原始命名空间保持其对象类型,这与我尝试将其重新/序列化为共享公共对象的命名空间明显不同,因为它们是不同的解决方案(即使类具有相同的属性和相同的名称)。
共享类,引用公共类和/或链接类似乎不是解决方案(除非我做错了),因为当它选择备份时它仍然看到父命名空间不同,因为它们是从不同的解决方案,所以它在尝试反序列化时会出错,因为它认为它是一个不同的类型。
原因 - 能够将其直接反序列化为原始对象类型,但是在不同项目的解决方案中。
任何见解或建议表示赞赏。谢谢
环境:Visual Studio 2015,.NET Core,C#(在控制台应用程序中测试)
答案 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);