列挙型のすべてのフィールドを取得する
フィールドの一覧から、特定の型のフィールドを取得することができます。 以下は、モデルのフィールドのうち列挙型のフィールドの型情報を取得する例です。
public void OutputEnumFields(ICommandContext c, ICommandParams p)
{
// 現在表示しているモデルのメタクラスの全フィールドを取得します
var fields = c.App.Workspace.CurrentModel.Metaclass.Fields.Values;
foreach ( var field in fields )
{
// $から始まるのはシステムのフィールドなので除外して下さい
if (field.Name.StartsWith("$")) continue;
// 列挙型ではないフィールドを除外します
var enumType = field.TypeEnum;
if (enumType == null) continue;
// 列挙の表示名を出力します
c.App.Output.WriteLine("sample", $"列挙型名: {enumType.DisplayName}");
}
}
注意
APIを利用してフィールドを取得した場合、システムで定義されたフィールドも同時に取得できます。 システムで定義されたフィールドは次のルールに従うため、不要ならば除外してください。
- 名前(
IField.Name
)の接頭辞が「$」 - 名前(
IField.Name
)の接頭辞が「___」