メインコンテンツまでスキップ

フィールドの型の一覧を取得する

エディタで選択しているモデルから、フィールドの型と参照フィールドのデータ数を取得するサンプルです。

public void OutputFields(ICommandContext c, ICommandParams p)
{
// モデルエディタ上で選択されている1番目のモデルを取得します
var model = c.App.Window.EditorPage.CurrentEditorView.SelectedModels.FirstOrDefault();
if (model == null) {
c.App.Window.UI.ShowMessageBox("モデルエディタ上で対象モデルを1つ選択してください");
return;
}

c.App.Output.WriteLine("デフォルト", $"モデル名: {model.Name}, メタモデル名: {model.Metaclass.DisplayName}({model.Metaclass.Name})");

// 対象モデルのフィールドとその型名を取得しまs
// 参照フィールドの場合は参照データ数を合わせて取得します
var fields = model.Metaclass.GetFields(); // IFieldCollection 型

foreach (var field in fields)
{
if (field.Name.StartsWith("___"))
{
// システムフィールドを無視します
continue;
}

c.App.Output.WriteLine("デフォルト", $" フィールド: {field.DisplayName}({field.Name}), <型名: {field.Type}>");
if (field.TypeClass != null)
{
c.App.Output.WriteLine("デフォルト", $" 参照データ数: {model.GetFieldValues(field.Name).Count}");
}
}
}
注意

APIを利用してフィールドを取得した場合、システムで定義されたフィールドも同時に取得できます。 システムで定義されたフィールドは次のルールに従うため、不要ならば除外してください。

  • 名前(IField.Name)の接頭辞が「$」
  • 名前(IField.Name)の接頭辞が「___」