プロダクトを適用した状態で設計モデルにアクセスする
プロダクトを適用した状態で設計モデルにアクセスするには、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}");
}
}