C# 将类型强制转换为相同类型但位于不同程序集中?
我序列化了一个类,并使用C# 将类型强制转换为相同类型但位于不同程序集中?,c#,C#,我序列化了一个类,并使用IPC将它发送到另一个应用程序,但是当我尝试将收到的类强制转换到同一个类(但在不同的程序集中)时,如果(在安全强制转换的情况下)我总是得到null,如果直接强制转换则抛出exception 那么,我如何访问接收到的类throwIPC的数据成员呢?注意:我使用JSON序列化和反序列化将我的类发送到另一个应用程序 我尝试用相同的程序集名称设置两个应用程序,但这不起作用 此外,我还尝试使用相同的结果设置程序集GUID。不要将不同的程序集与不同的命名空间混淆 如果这确实是同一个类
IPC
将它发送到另一个应用程序,但是当我尝试将收到的类强制转换到同一个类(但在不同的程序集中)时,如果(在安全强制转换的情况下)我总是得到null,如果直接强制转换则抛出exception
那么,我如何访问接收到的类throwIPC
的数据成员呢?注意:我使用JSON
序列化和反序列化将我的类发送到另一个应用程序
我尝试用相同的程序集名称设置两个应用程序,但这不起作用
此外,我还尝试使用相同的结果设置程序集GUID。不要将
不同的程序集
与不同的命名空间
混淆
如果这确实是同一个类,那么应该将其放在双方都可见/可访问的命名空间中。尝试将您的类放在一个公共程序集中,该程序集在两侧都引用
如果无法更改部件结构,请定义一个可供双方引用的接口(在附加部件中)。在接收端,您可以声明一个实现此接口的新类。如果您在不同的程序集中有相同的类名,那么即使这些程序集具有相同的名称,它们也是两种不同的类型。创建一个公共程序集,并在序列化和反序列化端使用 如果您不希望使用推荐的通用程序集,可以获取序列化的json字符串,并从该字符串中获取属性和值,然后使用它们创建所需的对象 我曾经将json字符串转换为dictionary来访问带有值的属性。你可以用更多的方法
签出并应用反向逻辑将其从字节转换回对象。@YoryeNathan它不是字节,而是Json对象,正如我所说的,我使用Json.net对对象进行序列化和反序列化如果在不同的程序集中有相同的类名,则它们是两种不同的类型,即使它们具有相同的名称。创建一个通用程序集,并在序列化和反序列化端使用。由于二进制需要对现有代码进行大量编辑,JSON.NET似乎工作得很好,但它不会将接收到的对象强制转换为目标程序集中的等效对象。所有内容都是由字节组成的。如果您已经有了一个不同的序列化/反序列化方法(例如JSON),那也一样好。包括您的代码以显示实际问题所在。因此,我无法动态转换它,因为这样做将需要我更改许多核心代码。我不明白您的第一句话“不要将不同的程序集与不同的命名空间混淆。”在这里是如何应用的。OP没有提到任何关于名称空间的内容。@Enigmativity他理解me@DanielEugen您还可以创建要对其进行类型转换的类的对象,而不是类型转换。@Adil您的意思是什么?
Dictionary<string, string> dic = JsonConvert.DeserializeObject < Dictionary<string, string>>(jsonSerializedString);
MyObject myObject = new MyObject { Name = dic["Name"], Id = int.Parse(dic["Id"]) };
public class MyObject
{
public int Id { get; set; }
public string Name { get; set; }
}