我序列化了一个类并使用IPC
将其发送到另一个应用程序,但是当我尝试将接收到的类强制转换为同一个类(但是在不同的程序集中)时,如果安全转换,我总是得到null如果直接演员,则抛出异常..
那么如何才能访问收到的类IPC
的数据成员?注意我使用JSON
序列化和反序列化将我的类发送到另一个应用程序。
我尝试使用相同的程序集名称设置两个应用程序,但这不起作用。
我也尝试使用相同的结果设置Assembly GUID。
答案 0 :(得分:1)
如果在不同的程序集中有相同的类名,那么即使它们具有相同的名称,它们也是两种不同的类型。进行通用程序集并在序列化和反序列化结束时使用。
如果您不希望使用推荐方式的公共程序集,则可以获取序列化的json字符串并从此字符串中获取属性和值,并使用它们来创建所需的对象。
我使用JSON.NET将json字符串转换为字典以访问带有值的属性。您可以采用更多方式here。
Dictionary<string, string> dic = JsonConvert.DeserializeObject < Dictionary<string, string>>(jsonSerializedString);
MyObject myObject = new MyObject { Name = dic["Name"], Id = int.Parse(dic["Id"]) };
我使用了MyObject,它将被你的类型替换
public class MyObject
{
public int Id { get; set; }
public string Name { get; set; }
}
答案 1 :(得分:0)
不要将different assembly
与different namespace
混淆。
如果这确实是相同的类,您应该将它放在双方都可见/可访问的命名空间中。尝试将您的类放在一个双方引用的公共程序集中。
如果您无法更改装配结构,请定义界面(在附加装配中),双方都可以参考。在接收方,您可以声明一个实现此接口的新类。