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

フィールドの型を調べる

IFieldオブジェクトのTypeプロパティを用いることでフィールドの型名を文字列で取得できます。 また、フィールドの型がユーザで定義したクラスの場合はIField.TypeClassプロパティ, 列挙型の場合はIField.TypeEnumプロパティで取得できます。

public void GetAllSuperClasses(ICommandContext c, ICommandParams p)
{
// メタモデルを取得します
IMetamodels metamodels = c.App.Workspace.CurrentProject.Profile.Metamodels;

// "Actor"のクラスを取得します
IClass cls = metamodels.GetClass("Actor");

// クラス名を出力します
c.App.Output.WriteLine("sample", $"Class: {cls.DisplayName}");

// すべてのフィールドの型を出力します
IFieldCollection fields = cls.GetFields();
foreach (var field in fields)
{
// フィールドの型を文字列で出力します
c.App.Output.WriteLine("sample", $"Type: {field.Type}");

if(field.TypeClass != null)
{
// フィールドの型がユーザ定義のクラスの場合、その完全修飾名を出力します
c.App.Output.WriteLine("sample", $" TypeClass: {field.TypeClass.FullName}");
}

if(field.TypeEnum != null)
{
// フィールドの型がユーザ定義の列挙型の場合、その完全修飾名を出力します
c.App.Output.WriteLine("sample", $" TypeEnum: {field.TypeEnum.FullName}");
}
}
}