モデルにタグ付き値を追加する
モデルにタグ付き値を追加する場合は、IModelオブジェクトのSetTagメソッドを用います。IModelはIObjectを継承しているため、IObject.SetTagメソッドを呼び出せます。
タグを追加することで、設定されている値やプロファイルに依存することなくモデルを取得できます。
tips
モデルのクラスに対してタグ付き値を追加しているのではないため、インスペクタ上からモデルに追加されたタグ付き値を確認することはできません。
public void SetTag(ICommandContext c, ICommandParams p)
{
// 現在表示しているモデルを取得します
IModel model = c.App.Workspace.CurrentModel;
// モデルに対しタグを追加します
model.SetTag("SomeTag", "SomeValue");
ITag tag = model.GetTag("SomeTag");
c.App.Workspace.Output.WriteLine("sample", $"タグが存在するか: {tag != null}");
c.App.Workspace.Output.WriteLine("sample", $" Key: {tag.Key}");
c.App.Workspace.Output.WriteLine("sample", $" Value: {tag.Value}");
// 既に存在するタグ名を指定することでタグ値を更新することができます
model.SetTag("SomeTag", "SomeValue_Update");
tag = model.GetTag("SomeTag");
c.App.Workspace.Output.WriteLine("sample", $"タグが存在するか: {tag != null}");
c.App.Workspace.Output.WriteLine("sample", $" Key: {tag.Key}");
c.App.Workspace.Output.WriteLine("sample", $" Value: {tag.Value}");
// タグを削除します
model.RemoveTag("SomeTag");
tag = model.GetTag("SomeTag");
c.App.Workspace.Output.WriteLine("sample", $"タグが存在するか: {tag != null}");
}
注記
SetTag メソッドや GetTagValue メソッドによるタグ値の取得・設定を行うと、自動ロード設定のモデルファイルの読み込みが発生します。一方、タグの有無を判定する GetTag などの API とタグを削除する RemoveTag メソッドは、モデルファイルの読み込みを行いません。未読み込みのモデルに対しては、モデルファイルにタグが設定されていても「タグなし」として動作し、RemoveTag メソッドは何も行いません。詳細は V5.1 の変更点 を参照してください。