2016-04-05 11 views
0

と静的クラスのインスタンスのプロパティをシリアル化静的メンバーを持つクラス。は、私はたくさんの静的メンバーと内側の部分クラスと非部分クラスで大きな部分クラスをした顧客のプロパティエディタ

ここで、別のクラスのプロパティでこれらのメンバーのいずれかに「リンク」を何らかの形で保存したいと思います。

[DefaultValue(null)] 
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 
    public kFieldClass Field 
    { 
     get; set; 
    } 

は、私が正常に動作します(ツリービュー内の穴の一覧が表示されます)のVisual Studioのための(主にthisに基づいIST)カスタムエディタを構築してきました。

Image Custom editor

私の問題は今、設計者は、Fieldプロパティ内の静的インスタンス(kFieldClass)を格納することはできません。 だから私は、私は二つの選択肢

  1. をした文字列として「フィールド」プロパティを作成し、ドット表記(kField.Campaign.Brand.id)との情報を保存し、後で反射によって静的インスタンスを取得すると思います。 問題:文字列プロパティのカスタムエディタを使用できませんか?または何か方法はありますか?

  2. 設計者が値を保存できるように、/ kFieldClassプロパティのシリアライザを作成します。私はこれが可能でも、これを行う正しい方法だとは思わない。

プロパティのカスタムTypeConverterで「再生」しましたが、カスタムエディタとのやりとりに関する不運はありませんでした。

+0

私はあなたの質問を元のフォームに戻し、自分の編集内容を自己回答に移しました。質問と回答の形式は、人々が関連する質問とその回答を見つけるのに役立つと考えています。 – Mogsdad

答えて

0
任意のプロパティにカスタムデザイナーを追加することが可能であるので、私は文字列に私の財産を変更した事実

[DefaultValue(null)] 
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] 
    [TypeConverter(typeof(kFieldTypeConverter))] 
    [Editor(typeof(kFieldDesignerEditor), typeof(System.Drawing.Design.UITypeEditor))] 
    public string Field 
    ... 

だから私の静的メンバである反射でから、文字列に変換され、ちょっと混乱しますが、うまくいきます。

プロパティエディタ(VSプロパティグリッドに表示されている部分)の値は空です(プロパティは塗りつぶされ、塗りつぶされ、読み込めます)。しかし、この部分は完全に削除することができます:TypeConverterは不要です!