Matrixクラスをシリアライズ化可能にするため,ISerializableを継承し,GetObjectDataメソッドをオーバライドしました.
しかし,コンパイルが通りません.
なぜだぁ〜!と悩むこと1時間...
原因が判明しました.なんと...,
誤:virtual void GetObjectData(SerializationInfo^ info, StreamingContext^ context)
正:virtual void GetObjectData(SerializationInfo^ info, StreamingContext context)
の違いでした.StreamingContextはvalueタイプだったのか...orz
アホくさいエラーでした.
namespace KrdLab { namespace Numerical { [Serializable] public ref class Matrix : public ISerializable { protected: Matrix(SerializationInfo^ info, StreamingContext context) { m_row = info->GetUInt32("row-size"); m_col = info->GetUInt32("column-size"); // その他,いろいろ } public: virtual void GetObjectData(SerializationInfo^ info, StreamingContext context) { info->AddValue("row-size", m_row); info->AddValue("column-size", m_col); // その他,いろいろ } // 以下,実装がつらつらと...