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

プロダクトを適用した状態で設計モデルにアクセスする

プロダクトを適用した状態で設計モデルにアクセスするには、IContextOptionオブジェクトのPlModelAccessModeプロパティを用います。

public void SetSpecifiedProductAccess(ICommandContext c, ICommandParams p)
{
var project = c.App.Workspace.CurrentProject;

var configurationModel = c.App.Workspace.CurrentProject.ProductLineModel.ConfigurationModel;
IProduct product = configurationModel.GetProduct("ACC-0011");

var children = project.GetAllChildren();
c.App.Output.WriteLine("sample", $"プロダクト適用前のモデル数: {children.Count()}");

// 指定されたプロダクトで有効な設計モデルのみ取得・検索を可能に設定します
c.ContextOption.PlModelAccessMode = PlModelAccessMode.SpecifiedProduct;
c.ContextOption.SpecifiedProduct = product;

children = project.GetAllChildren();
c.App.Output.WriteLine("sample", $"プロダクト適用後のモデル数: {children.Count()}");

// 指定されたプロダクトで有効な設計モデルの名前を取得します
foreach (IModel child in children)
{
c.App.Output.WriteLine("sample", $"Model: {child.Name}");
}
}