C# 如何在c中从外部dll保存对象状态#

C# 如何在c中从外部dll保存对象状态#,c#,dll,C#,Dll,我知道XML序列化,也知道在需要时如何将任何对象保存到文件中,但我首先需要访问对象的类代码以添加XML序列化代码 如果该类来自外部dll,并且包含dll中包含的大量对象,因此我无法访问内部代码以向该类添加xml序列化标记,那么当我无法访问其源代码时,如何将其状态保存到文件中?除非每个对象都具有[Serializable]属性,则需要制作自己的包装器来遍历每个类并将所需的所有内容保存到一个文件中,然后在需要时加载循环遍历该文件并将所有值设置回原来的状态 如果幸运的是,您需要保存的所有内容都是可序列

我知道XML序列化,也知道在需要时如何将任何对象保存到文件中,但我首先需要访问对象的类代码以添加XML序列化代码


如果该类来自外部dll,并且包含dll中包含的大量对象,因此我无法访问内部代码以向该类添加xml序列化标记,那么当我无法访问其源代码时,如何将其状态保存到文件中?

除非每个对象都具有[Serializable]属性,则需要制作自己的包装器来遍历每个类并将所需的所有内容保存到一个文件中,然后在需要时加载循环遍历该文件并将所有值设置回原来的状态


如果幸运的是,您需要保存的所有内容都是可序列化的,那么只需几行代码即可完成。

您的问题是什么?只需更改
新的XmlSerializer(typeof(YourClass))
新的XmlSerializer(instanceOfTheirObject.GetType())我没有访问某个dll的源代码的权限,我使用这个dll中的一些类,这些类的一个对象需要太多的时间来填充我需要的值(这是一个需要时间进行训练的分类器)。培训结束后,我需要保存其状态,以免每次运行程序重复培训时浪费时间steps@jeroenvanLangen我是否需要向类添加[serializable]属性,并确保我要保存的所有属性都声明为公共属性?XmlSerializer不需要这样做。看这里:既然你现在说你没有访问源代码的权限,你唯一的选择就是在每个类中循环,把你需要的所有值保存到一个文件中,那么私有成员呢?我不能拯救这些成员,对吗?是否有代码示例来执行循环?提前感谢,您将无法保存任何私人成员。另一种选择是反编译dll,并使用从反编译中获得的代码重建它。不过,您可能无法对其进行反编译,这完全取决于dll的开发人员