Пример #1
0
        /// <summary>   Discover and register. </summary>
        public void DiscoverAndRegister()
        {
            if (!ConfigurationContext.Current.DiscoverAndRegisterResources)
            {
                return;
            }

            var discoveredTypes = TypeDiscoveryHelper.GetTypes(
                t => t.GetCustomAttribute <LocalizedResourceAttribute>() != null,
                t => t.GetCustomAttribute <LocalizedModelAttribute>() != null);

            var discoveredResources = discoveredTypes[0];
            var discoveredModels    = discoveredTypes[1];
            var foreignResources    = ConfigurationContext.Current.ForeignResources;

            if (foreignResources != null && foreignResources.Any())
            {
                discoveredResources.AddRange(foreignResources.Select(x => x.ResourceType));
            }

            ResetSyncStatus();
            var allResources = new GetAllResources.Query().Execute().ToList();

            RegisterDiscoveredResources(discoveredResources, allResources);
            RegisterDiscoveredResources(discoveredModels, allResources);

            if (ConfigurationContext.Current.PopulateCacheOnStartup)
            {
                PopulateCache();
            }
        }
        /// <summary>Enumerates read all in this collection.</summary>
        /// <returns>An enumerator that allows foreach to be used to process read all in this collection.</returns>
        public IEnumerable <LocalizationResource> ReadAll()
        {
            ConfigurationContext.Current.TypeFactory.ForQuery <DetermineDefaultCulture.Query>()
            .SetHandler <DetermineDefaultCulture.Handler>();

            var discoveredTypes = TypeDiscoveryHelper.GetTypes(
                t => t.GetCustomAttribute <LocalizedResourceAttribute>() != null,
                t => t.GetCustomAttribute <LocalizedModelAttribute>() != null);

            var discoveredResources = discoveredTypes[0];
            var discoveredModels    = discoveredTypes[1];
            var types = discoveredResources.Concat(discoveredModels);

            var helper = new TypeDiscoveryHelper();
            var props  = types.SelectMany(type => helper.ScanResources(type)).DistinctBy(r => r.Key);

            return(props.Select(p => new LocalizationResource(p.Key)
            {
                Author = "Code",
                FromCode = true,
                IsHidden = p.IsHidden,
                IsModified = false,
                ModificationDate = DateTime.Now,
                Translations = p.Translations.Select(t => new LocalizationResourceTranslation
                {
                    Language = t.Culture,
                    Value = t.Translation
                }).ToList()
            }));
        }