CustomLineCap 没有SerializableAttribute
应用它。
我想将这种类型的属性添加到当前正在使用BinaryFormatter
.
我尝试切换到 XML 序列化,但它有很多额外的要求,我不想被那个 esp 愚弄。因为这不是我的代码;这是我下载的一些开源软件。
如果有办法BinaryFormatter
忽略该属性,那可能会起作用。
我宁愿子类化它;我只是不知道这是否会奏效。
CustomLineCap 没有SerializableAttribute
应用它。
我想将这种类型的属性添加到当前正在使用BinaryFormatter
.
我尝试切换到 XML 序列化,但它有很多额外的要求,我不想被那个 esp 愚弄。因为这不是我的代码;这是我下载的一些开源软件。
如果有办法BinaryFormatter
忽略该属性,那可能会起作用。
我宁愿子类化它;我只是不知道这是否会奏效。
您将无法直接序列化CustomLineCap
该类的实例。它派生自MarshalByRefObject
class,虽然这并不表示它不能被序列化,但几乎总是如此。
原因是MarshalByRefObject
类通常指示从它派生的对象仅在实例所在的应用程序域中具有上下文。在这种情况下,您的CustomLineCap
实例是一个GDI 对象,它只在它所在的进程中具有任何意义(它明确地绑定到一个句柄)。
也就是说,我建议使用适配器模式来创建一个包装器,该包装器捕获CustomLineCap
您希望序列化的实例的属性,然后公开和序列化该.
这通常是您希望对具有与特定域相关联的上下文的任何类采用的方法,当序列化以在该域之外持久化时,不再有意义。
请注意,子类化在这种情况下也不起作用,因为将SerializableAttribute
应用于您的子类意味着所有字段(甚至是您无权访问的私有字段)都将被序列化,包括任何只有上下文的句柄在创建它们的应用程序域中。