.NET API가있는 응용 프로그램의 플러그인을 작성하고 있습니다. 프로그램의 개체는 키/값 쌍을 개체에 할당하는 루트 개체 형식의 두 가지 메서드를 통해 적용되는 사용자 지정 특성을 가질 수 있습니다.래퍼 클래스의 생성자를 작성하는 올바른 방법은 무엇입니까
BaseAppObject.GetUserString(string key, string value);
BaseAppObject.SetUserString(string key, ref string value);
나는 의 인스턴스 BaseAppObject 주위의 래퍼 클래스의 역할을 내 자신의 사용자 정의 클래스의 집합을 만드는거야. 모든 클래스는 클래스 에서 파생됩니다. 노드에는 BaseAppObject에 대한 참조를 저장하는 필드가 있습니다. 노드 파생 다른 노드의 속성 및 종류를 읽거나 또는 관련 BaseAppObjects 문의 속성 값을 쓸 GetUserString와 연관된 BaseAppObject 인스턴스 SetUserString 방법을 사용한다. 이 방법으로 응용 프로그램이 닫히면 이러한 래퍼 클래스를 나중에 다시 생성하는 데 필요한 모든 정보가 실제 문서에 저장됩니다.
다음은 기본 클래스 생성자에 대한 간단한 버전입니다. 노드에서 파생
public abstract class Node
{
BaseAppObject _baseObject;
public Node(BaseAppObject baseObject, string name)
{
this._baseObject = baseObject;
this.Name = name;
}
public string Name
{
get {
string name = "";
_baseObject.GetUserString("CPName", ref name);
return name;
}
set {
_baseObject.SetUserString("CPName", value);
}
}
}
다른 클래스는 다음과 같이 추가 속성을 추가 할 수 있습니다.
public CustomClass:Node
{
public CustomClass(BaseAppObject baseObj,string name, string color):base(baseObj,name)
public string Color
{
get {
string name = "";
this.BaseObject.GetUserString("Color", ref name);
return name;
}
set {
this.BaseObject.SetUserString("Color", value);
}
}
}
나는 설정으로 시작하고 내 클래스의 인스턴스를 다시 생성 할 수있는 생성자와 내 수업의 다른 방법을 가장 좋은 방법을 알아 내려고 노력하고있어.
인스턴스 인
BaseAppObject을 기반으로하는 클래스의 새 인스턴스를 만들 수 있어야하며 사용자 문자열이 정의되어 있지 않으며 기존 BaseAppObject에 저장된 사용자 문자열을 기반으로 기존 클래스 인스턴스를 다시 생성해야합니다.
빈 클래스를 생성하면 BaseAppObject 인수 만받는 생성자를 만드는 것이 더 좋을 것이라고 생각합니다. –
위 코드는 래핑 클래스가 _baseObject에 액세스하는 데 필요한 기본 클래스의 public 속성을 생략했습니다. –
응? Node 생성자는 의미가 없습니다. "BaseAppObject baseObject"인수를 가져 와서 this.BaseObject 속성을 this로 설정할 수 없습니다. this.BaseObject는 BaseAppObject 속성이 아닌 string 속성입니다. –