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

派生クラスを取得する

派生クラスを取得する

IClassオブジェクトのGetSubClassesメソッドを用いることで直接の派生クラスを取得できます。

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

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

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

// 派生クラスを取得します
IClassCollection subClasses = cls.GetSubClasses();
foreach (var subClass in subClasses)
{
// クラス名を出力します
c.App.Output.WriteLine("sample", $"SubClass: {subClass.DisplayName}");
}
}

派生するすべてのクラスを取得する

IClassオブジェクトのGetAllSubClassesメソッドを用いることで派生クラスの派生クラスを含むすべての派生クラスを取得できます。

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

// ルートモデル基底のクラスを取得します
IClass cls = metamodels.GetClass("RootModelBase");

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

// すべての派生クラスを取得します
IClassCollection subClasses = cls.GetAllSubClasses();
foreach (var subClass in subClasses)
{
// クラス名を出力します
c.App.Output.WriteLine("sample", $"SuperClass: {subClass.DisplayName}");
}
}