すべてのフィーチャを取得する
すべてのフィーチャを取得するには、まずIProject
オブジェクトのProductLineModel.FeatureModels
プロパティにアクセスし、すべてのフィーチャモデルを取得します。取得した各フィーチャモデルに対し、IFeatureModel
オブジェクトのAllFeatures
プロパティを用いてすべての子要素を取得します。
public void GetAllFeatures(ICommandContext c, ICommandParams p)
{
IFeatureModelCollection featureModels = c.App.Workspace.CurrentProject.ProductLineModel.FeatureModels;
var features = featureModels.SelectMany(m => m.AllFeatures);
// フィーチャグループを除外した上で、割り当てモデルが0でないフィーチャを取得します
var assignedFeatures = features.Where(f => f.ClassName != "FeatureGroup" && f.GetAssignedModels().Count() != 0);
// 出力
foreach (IFeature feature in assignedFeatures)
{
// フィーチャが割り当てられているモデル名を列挙し、出力します
var modelNames = string.Join(",", feature.GetAssignedModels().Select(f => f.Name));
c.App.Output.WriteLine("sample", $"Feature Name: {feature.Name}, Kind: {feature.VariationKind}, Assigned Models: {modelNames}");
}
}