public override WriterContext GetWriterContext(IMemberDefinition member, ILanguage language) { TypeDefinition type = Utilities.GetDeclaringTypeOrSelf(member); Dictionary <FieldDefinition, PropertyDefinition> fieldToPropertyMap = type.GetFieldToPropertyMap(language); IEnumerable <FieldDefinition> propertyFields = fieldToPropertyMap.Keys; HashSet <PropertyDefinition> autoImplementedProperties = new HashSet <PropertyDefinition>(fieldToPropertyMap.Values); HashSet <EventDefinition> autoImplementedEvents = GetAutoImplementedEvents(type, language); TypeSpecificContext typeContext = new TypeSpecificContext(type) { AutoImplementedProperties = autoImplementedProperties, AutoImplementedEvents = autoImplementedEvents }; TypeDefinition declaringType = Utilities.GetDeclaringTypeOrSelf(member); Dictionary <string, string> renamedNamespacesMap = new Dictionary <string, string>(); MemberRenamingData memberReanmingData = GetMemberRenamingData(declaringType.Module, language); ModuleSpecificContext moduleContext = new ModuleSpecificContext(declaringType.Module, new List <string>(), new Dictionary <string, List <string> >(), new Dictionary <string, HashSet <string> >(), renamedNamespacesMap, memberReanmingData.RenamedMembers, memberReanmingData.RenamedMembersMap); return(new WriterContext( new AssemblySpecificContext(), moduleContext, typeContext, new Dictionary <string, MethodSpecificContext>(), GetDecompiledStatements(member, language, propertyFields))); }
public override ModuleSpecificContext GetModuleContext(ModuleDefinition module, ILanguage language) { if (this.cacheService.IsModuleContextInCache(module, language, this.renameInvalidMembers)) { return(this.cacheService.GetModuleContextFromCache(module, language, this.renameInvalidMembers)); } ICollection <string> moduleNamespaceUsings = GetModuleNamespaceUsings(module); Dictionary <string, List <string> > collisionTypesData = new Dictionary <string, List <string> >(); Dictionary <string, HashSet <string> > namesapceHieararchy = new Dictionary <string, HashSet <string> >(); Dictionary <string, string> renamedNamespacesMap = new Dictionary <string, string>(); MemberRenamingData memberRenamingData = GetMemberRenamingData(module, language); ModuleSpecificContext moduleContext = new ModuleSpecificContext(module, moduleNamespaceUsings, collisionTypesData, namesapceHieararchy, renamedNamespacesMap, memberRenamingData.RenamedMembers, memberRenamingData.RenamedMembersMap); this.cacheService.AddModuleContextToCache(module, language, this.renameInvalidMembers, moduleContext); return(moduleContext); }