シリアライズ化

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);
                
                // その他,いろいろ
            }
            
        // 以下,実装がつらつらと...