.NET API を使用してアプリケーション用のプラグインを作成しています。プログラムのオブジェクトは、オブジェクトにキーと値のペアを割り当てるルート オブジェクト タイプの 2 つのメソッドを介して適用されるカスタム属性を持つことができます。
BaseAppObject.GetUserString(string key, string value);
BaseAppObject.SetUserString(string key, ref string value);
のインスタンスのラッパー クラスとして機能する独自のカスタム クラスのセットを作成していますBaseAppObject
。Node
私のすべてのクラスは、への参照を格納するフィールドを持つクラスから派生していBaseAppObject
ます。Node
および から派生するのその他のプロパティは、関連付けられたインスタンスのおよびメソッドをNode
使用して、関連付けられた との間でプロパティ値を直接読み書きします。GetUserString
SetUserString
BaseAppObject
BaseAppObjects
このようにして、アプリケーションを閉じたときに、後でこれらのラッパー クラスを再生成するために必要なすべての情報が実際のドキュメントに格納されます。
これは、基本クラスのコンストラクター用に用意したものを簡略化したものです。
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);
}
}
}
から派生した他のクラスNode
は、このような追加のプロパティを追加する場合があります。
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
。