예제 #1
0
 private List <INamedTypeSymbol> GetChoosedBindFroms()
 {
     return(BindFromList.Where(b => b.IsChecked).Select(b => b.FromType).ToList());
 }
예제 #2
0
        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;
            }
        }