継承元のクラスを取得する
直接継承するクラスを取得する
IClass
オブジェクトのSuperClasses
プロパティを用いることで直接継承するクラスを取得できます。
public void GetSuperClasses(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}");
// 継承元クラスを取得します
IClassCollection superClasses = cls.SuperClasses;
foreach (var superClass in superClasses)
{
// クラス名を出力します
c.App.Output.WriteLine("sample", $"SuperClass: {superClass.DisplayName}");
}
}
すべての継承元のクラスを取得する
IClass
オブジェクトのGetAllSuperClasses
メソッドを用いることで継承元のクラスの継承元を含むすべての継承元のクラスを取得できます。
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}");
// すべての継承元クラスを取得します
IClassCollection superClasses = cls.GetAllSuperClasses();
foreach (var superClass in superClasses)
{
// クラス名を出力します
c.App.Output.WriteLine("sample", $"SuperClass: {superClass.DisplayName}");
}
}