Ejemplo n.º 1
0
        public CachedVsInfo(AggregateCatalog catalog, List<Type> packages) {
            Catalog = catalog;
            Packages = packages;

            foreach (var package in Packages) {
                var attrs = package.GetCustomAttributes(typeof(ProvideLanguageServiceAttribute), false);
                foreach (ProvideLanguageServiceAttribute attr in attrs) {
                    foreach (var type in package.Assembly.GetTypes()) {
                        if (type.GUID == attr.LanguageServiceSid) {
                            var info = new LanguageServiceInfo(attr);
                            LangServicesByGuid[attr.LanguageServiceSid] = info;
                            LangServicesByName[attr.LanguageName] = info;

                            break;
                        }
                    }
                }

                var extensions = package.GetCustomAttributes(typeof(ProvideLanguageExtensionAttribute), false);
                foreach (ProvideLanguageExtensionAttribute attr in extensions) {
                    LanguageServiceInfo info;
                    if (LangServicesByGuid.TryGetValue(attr.LanguageService, out info)) {
                        _languageNamesByExtension[attr.Extension] = info.Attribute.LanguageName;
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public CachedVsInfo(ComposableCatalog catalog, List <Type> packages)
        {
            Catalog  = catalog;
            Packages = packages;

            foreach (var package in Packages)
            {
                var attrs = package.GetCustomAttributes(typeof(ProvideLanguageServiceAttribute), false);
                foreach (ProvideLanguageServiceAttribute attr in attrs)
                {
                    foreach (var type in package.Assembly.GetTypes())
                    {
                        if (type.GUID == attr.LanguageServiceSid)
                        {
                            var info = new LanguageServiceInfo(attr);
                            LangServicesByGuid[attr.LanguageServiceSid] = info;
                            LangServicesByName[attr.LanguageName]       = info;

                            break;
                        }
                    }
                }

                var extensions = package.GetCustomAttributes(typeof(ProvideLanguageExtensionAttribute), false);
                foreach (ProvideLanguageExtensionAttribute attr in extensions)
                {
                    LanguageServiceInfo info;
                    if (LangServicesByGuid.TryGetValue(attr.LanguageService, out info))
                    {
                        _languageNamesByExtension[attr.Extension] = info.Attribute.LanguageName;
                    }
                }
            }
        }