public EncapsulateFieldCandidateSetsProvider(IDeclarationFinderProvider declarationFinderProvider, IEncapsulateFieldCandidateFactory encapsulateFieldCandidateFactory, QualifiedModuleName qualifiedModuleName) { EncapsulateFieldUseBackingFieldCandidates = declarationFinderProvider.DeclarationFinder.Members(qualifiedModuleName, DeclarationType.Variable) .Where(v => v.ParentDeclaration is ModuleDeclaration && !v.IsWithEvents) .Select(f => encapsulateFieldCandidateFactory.CreateFieldCandidate(f)) .ToList(); var objectStateUDTCandidates = EncapsulateFieldUseBackingFieldCandidates .OfType <IUserDefinedTypeCandidate>() .Where(fc => fc.Declaration.Accessibility == Accessibility.Private && fc.Declaration.AsTypeDeclaration.Accessibility == Accessibility.Private) .Select(udtc => encapsulateFieldCandidateFactory.CreateObjectStateField(udtc)) //If multiple fields of the same UserDefinedType exist, they are all disqualified as candidates to host a module's state. .ToLookup(objectStateUDTCandidate => objectStateUDTCandidate.Declaration.AsTypeDeclaration.IdentifierName) .Where(osc => osc.Count() == 1) .SelectMany(osc => osc) .ToList(); var defaultObjectStateUDT = encapsulateFieldCandidateFactory.CreateDefaultObjectStateField(qualifiedModuleName); objectStateUDTCandidates.Add(defaultObjectStateUDT); ObjectStateFieldCandidates = objectStateUDTCandidates; EncapsulateFieldUseBackingUDTMemberCandidates = EncapsulateFieldUseBackingFieldCandidates .Select(fc => encapsulateFieldCandidateFactory.CreateUDTMemberCandidate(fc, defaultObjectStateUDT)) .ToList(); }
public EncapsulateFieldUseBackingFieldModelFactory(IDeclarationFinderProvider declarationFinderProvider, IEncapsulateFieldCandidateFactory candidatesFactory, IEncapsulateFieldCandidateSetsProviderFactory candidateSetsFactory, IEncapsulateFieldConflictFinderFactory encapsulateFieldConflictFinderFactory) { _declarationFinderProvider = declarationFinderProvider; _candidatesFactory = candidatesFactory; _candidateSetsFactory = candidateSetsFactory; _conflictFinderFactory = encapsulateFieldConflictFinderFactory; }