gpt4 book ai didi

c# - 如何序列化dll中的对象?

转载 作者:行者123 更新时间:2023-11-30 17:18:25 25 4
gpt4 key购买 nike

所以,我有一个在运行时加载 dll 的项目,我正在使用反射和接口(interface)来创建 dll。

我创建了一个引用为 dll(在运行时)的用户控件,它有一个需要序列化的列表。它正确地序列化了项目,但是当我尝试加载它时,我无法反序列化它。

现在,我在另一个将用户控件作为项目引用的项目上测试了这个用户控件,它运行良好。

这是我的代码:

    static public object SerializeLoad(string sFilename)
{
try
{
object _object = null;
Stream stream = File.Open(sFilename, FileMode.Open);
//BinaryFormatter bformatter = new BinaryFormatter();
XmlSerializer bformatter = new XmlSerializer(typeof(ElementTodo), "ToDo");

//_object = (_object.GetType())bformatter.Deserialize(stream);
_object = bformatter.Deserialize(stream);
stream.Close();
return _object;
}
catch
{
return null;
}
}

我尝试了二进制文件和 xml 文件,并且都通过“XML 文档 (2, 2) 中存在错误”进行了尝试。任何想法为什么会这样?


生成的XML如下:

  <?xml version="1.0"?> 
<ArrayOfElementTodo xmlns:xsi="w3.org/2001/XMLSchema-instance"; xmlns:xsd="w3.org/2001/XMLSchema"; xmlns="ToDo">
<ElementTodo Title="a" content="aa" isDone="false" />
<ElementTodo Title="b" content="bb" isDone="false" />
<ElementTodo Title="c" content="cc" isDone="false" />
<ElementTodo Title="d" content="dd" isDone="false" />
</ArrayOfElementTodo>

最佳答案

原因是为了能够反序列化一个对象,对象的类型必须是可用的,因为 .NET 是一个静态类型的环境。 (程序中的每个实例都必须有一个类型及其成员列表等)

或者,您可以使用 C# 4 动态反序列化任意 XML(12)。

关于c# - 如何序列化dll中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5784403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com