protected virtual void OnAssemblyCollectionChanged(NotifyCollectionChangedEventArgs e) { TypeResolver typeResolver = this; typeResolver.versionStamp = typeResolver.versionStamp + 1; bool flag = false; ICollection <IAssembly> platformAssemblies = this.PlatformAssemblies; ICollection <IAssembly> libraryAssemblies = this.LibraryAssemblies; List <IAssembly> assemblies = new List <IAssembly>(); List <IAssembly> assemblies1 = new List <IAssembly>(); if (this.invalidatingAssemblies != null) { assemblies.AddRange( from assembly in this.invalidatingAssemblies where !this.AssemblyReferences.Contains(assembly) select assembly); assemblies1.AddRange( from assembly in this.AssemblyReferences where !this.invalidatingAssemblies.Contains(assembly) select assembly); this.invalidatingAssemblies = null; } HashSet <IAssembly> assemblies2 = new HashSet <IAssembly>(( from libraryAssembly in libraryAssemblies where !TypeResolver.ShouldRefreshLibraryAssembly(assemblies, assemblies1, libraryAssembly) select libraryAssembly).Concat <IAssembly>(platformAssemblies)); HashSet <ProjectContextType> projectContextTypes = new HashSet <ProjectContextType>( from type in this.typeIds.Values where TypeResolver.ShouldRefreshType(type, assemblies2) select type); if (e.Action == NotifyCollectionChangedAction.Reset) { RuntimeGeneratedTypesHelper.ClearControlEditingDesignTypeAssembly(); } foreach (ProjectContextType projectContextType in projectContextTypes) { if (projectContextType.Refresh()) { continue; } flag = true; } if (flag) { IList <string> list = ( from keyValuePair in this.typeIds where projectContextTypes.Contains(keyValuePair.Value) select keyValuePair.Key).ToList <string>(); for (int i = 0; i < list.Count; i++) { this.typeIds.Remove(list[i]); } this.typeMetadataFactory.Reset(); } List <IAssembly> assemblies3 = new List <IAssembly>(); if (flag) { assemblies3.AddRange(this.AssemblyReferences.Where <IAssembly>((IAssembly assembly) => { if (assemblies1.Contains(assembly) || assemblies.Contains(assembly) || platformAssemblies.Contains(assembly)) { return(false); } return(!libraryAssemblies.Contains(assembly)); })); } List <TypeChangedInfo> typeChangedInfos = new List <TypeChangedInfo>(); typeChangedInfos.AddRange( from assembly in assemblies select new TypeChangedInfo(assembly, ModificationType.Removed)); typeChangedInfos.AddRange( from assembly in assemblies1 select new TypeChangedInfo(assembly, ModificationType.Added)); typeChangedInfos.AddRange( from assembly in assemblies3 select new TypeChangedInfo(assembly, ModificationType.Modified)); this.OnTypesChanged(new TypesChangedEventArgs(new ReadOnlyCollection <TypeChangedInfo>(typeChangedInfos))); }
protected void Initialize(IPlatformTypes platformTypes) { this.platformTypes = platformTypes; this.typeMetadataFactory = this.platformTypes.CreateTypeMetadataFactory(this); RuntimeGeneratedTypesHelper.ClearControlEditingDesignTypeAssembly(); }