フィールド値を更新する
ここではモデルに対するフィールド値の更新の基礎について説明します。
説明の対象となるフィールドの型は、文字列・整数などのプリミティブな型と列挙型です。クラス型のフィールドに対する更新は、目的にあわせて以下を参照してください。
プリミティブな型と列挙型のフィールド値を更新する場合は、IModel
オブジェクトのSetField
メソッドを用います。
文字列・整数値・実数値のフィールド値を更新する
文字列・整数値・実数値のフィールド値の更新は、IModel
オブジェクトのSetField
メソッドの第2引数に設定値を指定します。
public void SetField(ICommandContext c, ICommandParams p)
{
IModel model = c.App.Workspace.CurrentModel;
// 文字列
// "StringField"という名前の文字列フィールドに、文字列"サンプル"を設定します
model.SetField("StringField", "サンプル");
// 整数値
// "IntegerField"という名前の整数型フィールドに、整数値100を設定します
model.SetField("IntegerField", 100);
// 実数値
// "IntegerField"という名前の整数型フィールドに、実数値123.45を設定します
model.SetField("DoubleField", 123.45);
}
現在のモデルのフィールド値を加工して、同じフィールドに設定することも可能です。
public void SetField(ICommandContext c, ICommandParams p)
{
IModel model = c.App.Workspace.CurrentModel;
// 名前フィールドの値を取得します
var name = model.GetFieldString("Name");
// 名前フィールドの値の末尾に"_"を追加して更新します
model.SetField("Name", $"{name}_");
}
列挙型のフィールド値を更新する
列挙型のフィールド値の更新は、IModel
オブジェクトのSetField
メソッドの第2引数に設定する列挙リテラル値を指定します。
public void SetField(ICommandContext c, ICommandParams p)
{
IModel model = c.App.Workspace.CurrentModel;
// フィールドの型である列挙型を取得します
IField enumField = model.Metaclass.GetField("EnumField");
IEnum type = enumField.TypeEnum;
// 設定値である列挙リテラル値を取得します
// "SampleLiteralA"という名前の列挙リテラル値を設定する場合
IEnumLiteral literal = type.NameOf("SampleLiteralA");
model.SetField("EnumField", literal);
}