在C#中强制将SDK库中的class标记为可序列化

Forcibly mark a class in a library of a SDK as Serializable in C#

我的应用程序使用了一个 SDK(我最近购买的)。虽然我已经把我的class标记为可序列化了,但是当我想序列化它的时候,出现了一个错误:

程序集 'IOp.FLib, Version=1.7.0.0, Culture=neutral, PublicKeyTocken=nul' 中的类型 'FLib.FClass' 未标记为可序列化。

如何强制将 FClass 标记为可序列化?

我发现的最佳方法是在序列化对象之前取消分配对象的事件,然后重新分配它们,并在反序列化后立即分配事件。像这样:

        MemoryStream stream;
        .
        .
        .

        // Serialize
        obj.Event1 -= Obj_Event1;
        obj.Event2 -= Obj_Event2;
        ...
        IFormatter formatter = new BinaryFormatter();
        formatter.Serialize(stream, obj);
        obj.Event1 += Obj_Event1;
        obj.Event2 += Obj_Event2;
        ...

        .
        .
        .

        // Deserialize
        IFormatter formatter = new BinaryFormatter();
        stream.Seek(0, SeekOrigin.Begin);
        obj = formatter.Deserialize(stream);
        obj.Event1 += Obj_Event1;
        obj.Event2 += Obj_Event2;
        ...