関連のフィールドにアクセスする
関連オブジェクト(IRelationship
)のコレクションはIModel
オブジェクトのGetRelations
メソッドで取得できます。IRelationship
はIModel
を継承しており、フィールドにアクセスできます。
public void GetRelationFields(ICommandContext c, ICommandParams p)
{
IModel model = c.App.Workspace.CurrentModel;
// 関連
foreach ( IRelationship transition in model.GetRelations("Transitions") )
{
// 関連のフィールドを取得します
var trigger = transition.GetFieldString("Trigger");
// アウトプットに出力します
c.App.Output.WriteLine("sample", $"Trigger: {trigger}");
}
}
関連先のモデル(IModel
)は、IRelationship
オブジェクトのSource
プロパティやTarget
プロパティでアクセスできます。
public void GetRelationEnds(ICommandContext c, ICommandParams p)
{
IModel model = c.App.Workspace.CurrentModel;
// 関連
foreach ( IRelationship transition in model.GetRelations("Transitions") )
{
// 関連元、関連先のモデル
IModel source = transition.Source;
IModel target = transition.Target;
// アウトプットに出力します
c.App.Output.WriteLine("sample", $"Source: {source.Name}");
c.App.Output.WriteLine("sample", $"Target: {target.Name}");
}
}
関連元と関連先のメタモデル上のフィールド定義情報(IField
)はIRelationship
オブジェクトのSourceField
プロパティ、TargetField
プロパティでアクセスできます。
public void GetRelationEndFields(ICommandContext c, ICommandParams p)
{
IModel model = c.App.Workspace.CurrentModel;
// 関連
foreach ( IRelationship transition in model.GetRelations("Transitions") )
{
// 関連元、関連先のフィールド
IField sourceField = transition.SourceField;
IField targetField = transition.TargetField;
// アウトプットに出力します
c.App.Output.WriteLine("sample", $"SourceField: {sourceField.Name}");
c.App.Output.WriteLine("sample", $"TargetField: {targetField.Name}");
}
//...
}