フィールドの型を調べる
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}");
}
}
}