2012/10/19(Fri) 11:11:33 編集(投稿者)
Hongliang様
ご返信頂きありがとうございます。
なるほど、確かにシリアライズでget、デシリアライズでsetするはずですよね。
それできっとset/getが無いといけないんですね。
なんとなく、丸々インスタンスを放り込むイメージでいたので、
プロパティが必要という認識に至っておりませんでした。
方針自体は後者に近い形でいきたいと思います。
実際には今のところ、Colorの値をメンバに持ち、
プロパティでColor自体の値と、Red,Green,Blueの値のset/getプロパティを用意し、
set/getプロパティ内でColorを再割り当てなどしています。
当該コードは下記の通りです。
実際にこれをそのまま使用していますので、そのままコピペでも使えます。
(後でこの質問を見た方へ)
public class LooksLikeColor
    {
        private Color clsDrawColor = Color.White;
        public LooksLikeColor() { }
        [RefreshProperties(RefreshProperties.Repaint)]
        public Color DrawColor
        {
            get { return clsDrawColor; }
            set
            {
                clsDrawColor = value;
            }
        }
        [RefreshProperties(RefreshProperties.Repaint)]
        public int R
        {
            get { return clsDrawColor.R; }
            set
            {
                if (clsDrawColor.R != value)
                {
                    clsDrawColor = Color.FromArgb(value, clsDrawColor.G, clsDrawColor.B);
                }
            }
        }
        [RefreshProperties(RefreshProperties.Repaint)]
        public int G
        {
            get { return clsDrawColor.G; }
            set
            {
                if (clsDrawColor.G != value)
                {
                    clsDrawColor = Color.FromArgb(clsDrawColor.R, value, clsDrawColor.B);
                }
                
            }
        }
        [RefreshProperties(RefreshProperties.Repaint)]
        public byte B
        {
            get { return clsDrawColor.B; }
            set
            {
                if (clsDrawColor.B != value)
                {
                    clsDrawColor = Color.FromArgb(clsDrawColor.R, clsDrawColor.G, value);
                }
                
            }
        }
    }