@@ -80,24 +80,27 @@ private static string GetVbTextForProperties(INamedTypeSymbol myProject, string
8080 var containerType = myProject ? . GetMembers ( propertyContainerClassName ) . OfType < ITypeSymbol > ( ) . FirstOrDefault ( ) ;
8181 var propertiesToReplicate = containerType ? . GetMembers ( ) . Where ( m => m . IsKind ( SymbolKind . Property ) ) . ToArray ( ) ;
8282 if ( propertiesToReplicate ? . Any ( ) != true ) return "" ;
83- var vbTextForProperties = propertiesToReplicate . Select ( s => $@ "
83+ var vbTextForProperties = propertiesToReplicate . Select ( s => {
84+ var fieldName = $ "{ Constants . MergedMyMemberPrefix } m_{ s . Name } ";
85+ return $@ "
8486 <EditorBrowsable(EditorBrowsableState.Never)>
85- Public m_ { s . Name } As { s . Name }
87+ Public { fieldName } As { s . Name }
8688
87- Public Property { s . Name } As { s . Name }
89+ Public Property { Constants . MergedMyMemberPrefix } { s . Name } As { s . Name }
8890 <DebuggerHidden>
8991 Get
90- m_ { s . Name } = Create__Instance__(Of { s . Name } )(m_ { s . Name } )
91- Return m_ { s . Name }
92+ { fieldName } = Create__Instance__(Of { s . Name } )({ fieldName } )
93+ Return { fieldName }
9294 End Get
9395 <DebuggerHidden>
9496 Set(ByVal value As { s . Name } )
95- If value Is m_ { s . Name } Then Return
97+ If value Is { fieldName } Then Return
9698 If value IsNot Nothing Then Throw New ArgumentException(""Property can only be set to Nothing"")
97- Me.Dispose__Instance__(Of { s . Name } )(m_ { s . Name } )
99+ Me.Dispose__Instance__(Of { s . Name } )({ fieldName } )
98100 End Set
99101 End Property
100- " ) ;
102+ " ;
103+ } ) ;
101104 string propertiesWithoutContainer = string . Join ( Environment . NewLine , vbTextForProperties ) ;
102105 return $@ " Friend Partial Class { propertyContainerClassName }
103106{ propertiesWithoutContainer }
@@ -113,25 +116,26 @@ private static string Renamespace(this string sourceText)
113116
114117 public static async Task < Project > RenameMergedNamespaces ( this Project project )
115118 {
116- project = await RenameNamespace ( project , Constants . MergedMyNamespace , "My" ) ;
117- project = await RenameNamespace ( project , Constants . MergedMsVbNamespace , "VisualBasic" ) ;
119+ project = await RenamePrefix ( project , Constants . MergedMyNamespace , "My" , SymbolFilter . Namespace ) ;
120+ project = await RenamePrefix ( project , Constants . MergedMsVbNamespace , "VisualBasic" , SymbolFilter . Namespace ) ;
121+ project = await RenamePrefix ( project , Constants . MergedMyMemberPrefix , "" , SymbolFilter . Member ) ;
118122 return project ;
119123 }
120124
121- private static async Task < Project > RenameNamespace ( Project project , string oldName , string newName )
125+ private static async Task < Project > RenamePrefix ( Project project , string oldNamePrefix , string newNamePrefix , SymbolFilter symbolFilter )
122126 {
123- for ( var symbolToRename = await GetFirstSymbolWithName ( project , oldName ) ; symbolToRename != null ; symbolToRename = await GetFirstSymbolWithName ( project , oldName ) )
127+ for ( var symbolToRename = await GetFirstSymbolStartingWith ( project , oldNamePrefix , symbolFilter ) ; symbolToRename != null ; symbolToRename = await GetFirstSymbolStartingWith ( project , oldNamePrefix , symbolFilter ) )
124128 {
125- var renamedSolution = await Renamer . RenameSymbolAsync ( project . Solution , symbolToRename , newName , default ( OptionSet ) ) ;
129+ var renamedSolution = await Renamer . RenameSymbolAsync ( project . Solution , symbolToRename , symbolToRename . Name . Replace ( oldNamePrefix , newNamePrefix ) , default ( OptionSet ) ) ;
126130 project = renamedSolution . GetProject ( project . Id ) ;
127131 }
128132 return project ;
129133 }
130134
131- private static async Task < ISymbol > GetFirstSymbolWithName ( Project project , string mergedMyNamespace )
135+ private static async Task < ISymbol > GetFirstSymbolStartingWith ( Project project , string symbolPrefix , SymbolFilter symbolFilter )
132136 {
133137 var compilation = await project . GetCompilationAsync ( ) ;
134- return compilation . GetSymbolsWithName ( s => s == mergedMyNamespace , SymbolFilter . Namespace ) . FirstOrDefault ( ) ;
138+ return compilation . GetSymbolsWithName ( s => s . StartsWith ( symbolPrefix ) , symbolFilter ) . FirstOrDefault ( ) ;
135139 }
136140 }
137141}
0 commit comments