gpt4 book ai didi

c# - 如何序列化 CustomLineCap 类的实例

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

CustomLineCap 没有应用 SerializableAttribute

我想将此类型的属性添加到当前正在使用 BinaryFormatter 序列化/反序列化的对象图中。

我尝试切换到 XML 序列化,但它有很多额外的要求,我不想愚弄那个 esp。因为这不是我的代码;这是我下载的一些开源软件。

如果有办法让 BinaryFormatter 忽略该属性,那可能会奏效。

我宁愿继承它;我只是不知道这是否会奏效。

最佳答案

您将无法序列化 CustomLineCap class 的实例直接地。它源自 MarshalByRefObject class ,虽然这并不表示它不能被序列化,但它几乎总是是这种情况。

原因是 MarshalByRefObject 类通常指示从它派生的对象仅在实例所在的应用程序域中具有上下文。在这种情况下,您的 CustomLineCap 实例是 GDI object只有在它所在的进程中才有意义(它明确地绑定(bind)到一个句柄)。

也就是说,我建议使用 adapter pattern创建一个包装器来捕获您希望序列化的 CustomLineCap 实例的属性,然后公开并序列化那个

这通常是您希望对具有绑定(bind)到特定域的上下文的任何类采用的方法,当序列化为在该域之外持久化时,不会感觉了。

请注意,子类化在这种情况下也不起作用,因为应用 SerializableAttribute到您的子类意味着所有字段(即使是您无权访问的私有(private)字段)都将被序列化,包括在创建它们的应用程序域中仅具有上下文的任何句柄。

关于c# - 如何序列化 CustomLineCap 类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9180443/

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