private List <INamedTypeSymbol> GetChoosedBindFroms() { return(BindFromList.Where(b => b.IsChecked).Select(b => b.FromType).ToList()); }
public override async Task StartAsync() { var componentModel = (IComponentModel)Package.GetGlobalService(typeof(SComponentModel)); var vsWorkspace = componentModel.GetService <VisualStudioWorkspace>(); var document = vsWorkspace.GetDocument( _choosedParameters.Target.FilePath, _choosedParameters.Target.ProjectGuid ); if (document == null) { return; } var targetClass = await document.GetSymbolAtAsync <INamedTypeSymbol>( new Microsoft.CodeAnalysis.Text.TextSpan( _choosedParameters.Target.TypeSpanStart, _choosedParameters.Target.TypeSpanLength ), CancellationToken.None ); if (targetClass == null) { return; } _targetClass = targetClass; var bindFromList = new List <BindFromViewModel>(); foreach (var(level, parent) in targetClass.IterateInterfaces()) { bindFromList.Add( new BindFromViewModel( level, parent ) ); } foreach (var(level, parent) in targetClass.IterateClasses()) { bindFromList.Add( new BindFromViewModel( level, parent ) ); } if (bindFromList.Count == 0) { return; } foreach (var bm in bindFromList) { BindFromList.Add(bm); } if (_choosedParameters.ChoosedBindsFrom != null && _choosedParameters.ChoosedBindsFrom.Count != 0) { foreach (var bm in BindFromList) { if (_choosedParameters.ChoosedBindsFrom.Any(cbf => SymbolEqualityComparer.Default.Equals(cbf, bm.FromType))) { bm.IsChecked = true; } } } else { BindFromList[0].IsChecked = true; } }