私は基本クラスと派生クラス(後述)と単一のプロパティ "TestProperty"を持っています。私の目標は、私がintializecomponent内でシリアル化されるように、testpropertyで設定した値を取得することです。後の時点では、デザイン時にこのプロパティの新しい値にアクセスするためにベースクラスが必要で、その値がintializecomponentに設定されていなければ、この新しい "あなたがうまくいけば(私はデフォルト値の属性がこの場合には関連しているとは思わない)。initializeecomponentに書き込まれるプロパティを強制的に派生した派生クラス
以下のケースでは、デザイナで「派生」を開いてプロパティを新しい値に手動で設定すると、自分のプロパティをシリアル化する唯一の方法があります。
私はカスタムのコード化リライザが解決策になると懸念していますが、私はそれを避けるために非常に努力しています。私は "ベース"にできるだけ少ないコードを持たせたい。
デザイナーから編集してinitializecomponentに詰まってしまうように、私のプロパティ(コードから得ることができる場所に設定)を取得するにはどうすればよいですか?
public partial class Base : Form
{
public Base()
{
InitializeComponent();
TestProperty = "set in the base class";
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public string TestProperty
{
get;
set;
}
}
とシンプルな派生クラス
public partial class Derived : Base
{
public Derived()
{
InitializeComponent();
this.TestProperty = "i want to be packed into initializecomponent somehow";
}
}
私は私がやっている何をやろうとしている理由のいくつかのより多くの情報。
私の問題は、デザイナーで「派生」を開いたときに、「editableproperty」という名前のプロパティを編集するために使用されるカスタムのeditorcontrol biengがあることです。この場合、EditablePropertyはTestPropertyにアクセスする必要があります。実行時には、問題はありません。タイプとして導出され、問題はありません。
問題は、私が使用しているEditorControlが別のアセンブリにあり、それが何らかの理由で考えられているからです。派生したのコンストラクタ。
基本的には、デザイナーで開いてカスタムエディターを使用しようとすると、TestPropertyの値として「基本クラスに設定」されます。私は、私のエディタコントロールがその値を見るために、initializecomponentにTestPropertyをセットする必要があります。
自分で設定する場合は、その値をInitializeComponentに直接書き込む必要はありません。この新しい「デフォルト値」にアクセスすることはできませんが、実際にはDerived(他の形式を派生することを含む)の使用にはその値が含まれます。多分あなたが達成しようとしていることについてもっと説明できるなら、それはあなたに良い答えを与えるのに役立ちます。 –
私は、うまくいけば私がしようとしていることを説明するために質問を編集しました。 – greggorob64