Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将类型强制转换为相同类型但位于不同程序集中?_C# - Fatal编程技术网

C# 将类型强制转换为相同类型但位于不同程序集中?

C# 将类型强制转换为相同类型但位于不同程序集中?,c#,C#,我序列化了一个类,并使用IPC将它发送到另一个应用程序,但是当我尝试将收到的类强制转换到同一个类(但在不同的程序集中)时,如果(在安全强制转换的情况下)我总是得到null,如果直接强制转换则抛出exception 那么,我如何访问接收到的类throwIPC的数据成员呢?注意:我使用JSON序列化和反序列化将我的类发送到另一个应用程序 我尝试用相同的程序集名称设置两个应用程序,但这不起作用 此外,我还尝试使用相同的结果设置程序集GUID。不要将不同的程序集与不同的命名空间混淆 如果这确实是同一个类

我序列化了一个类,并使用
IPC
将它发送到另一个应用程序,但是当我尝试将收到的类强制转换到同一个类(但在不同的程序集中)时,如果(在安全强制转换的情况下)我总是得到null,如果直接强制转换则抛出exception

那么,我如何访问接收到的类throw
IPC
的数据成员呢?注意:我使用
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; }
}