기본 클래스와 파생 클래스 (아래 설명 참조) 및 단일 속성 "TestProperty"가 있습니다. 내 목표는 intializecomponent 내부에서 serialize되도록 testproperty에 설정 한 값을 가져 오는 것입니다. 나중에 매우 중요하기 때문에 디자인 타임에이 속성의 새 값에 액세스 할 기본 클래스가 필요하며 intializecomponent에 값이 설정되어 있지 않으면이 새 클래스에 대한 액세스 권한이 없습니다. 기본 값 "잘 (그러나, 나는 defaultvalue 속성이이 경우 관련이 있다고 생각하지 않습니다).파생 클래스가 initializecomponent에 작성된 속성을 강제 적용합니다.
아래의 경우 디자이너에서 "파생 된"열어 속성을 새 값으로 수동으로 설정하면 내 속성을 직렬화 할 수있는 유일한 방법입니다.
나는 맞춤형 코드화 합성기가 해결책이 될 것이라고 염려하지만, 나는 그것을 피하려고 애 쓰고있다. 가능한 "적은"코드를 "기본"싶습니다.
디자이너에서 편집하여 내 속성을 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 값으로 가져옵니다. 내 editorcontrol이 값을보기 위해서 TestProperty를 initializecomponent에 설정해야합니다.
직접 설정하려는 경우 InitializeComponent에 직접 값을 쓰지 않아도됩니다. 이 새로운 "기본 값"에 액세스 할 수는 없지만 사실 파생 된 (파생 된 다른 형식을 파생시키는 포함) 사용은 해당 값을 포함합니다. 어쩌면 당신이 성취하고자하는 것에 대해 더 설명 할 수 있다면, 그것은 당신에게 더 나은 대답을 줄 수 있습니다. –
나는 (잘) 내가 뭘하려고하는지 잘 설명하도록 질문을 편집했다. – greggorob64