派生クラスを取得する
派生クラスを取得する
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}");
}
}