コード例 #1
0
        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)));
        }
コード例 #2
0
 protected void Initialize(IPlatformTypes platformTypes)
 {
     this.platformTypes       = platformTypes;
     this.typeMetadataFactory = this.platformTypes.CreateTypeMetadataFactory(this);
     RuntimeGeneratedTypesHelper.ClearControlEditingDesignTypeAssembly();
 }