Ejemplo n.º 1
0
        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            ValidationHelper.NotNull(serviceProvider, "serviceProvider");
            var rootObjectProvider = serviceProvider.GetService(typeof(IRootObjectProvider)) as IRootObjectProvider;

            if (rootObjectProvider == null)
            {
                throw new InvalidOperationException(string.Format(ServiceException, GetType().Name, "IRootObjectProvider"));
            }
            if (rootObjectProvider.RootObject is ResourceDictionary)
            {
                var ret1 = StaticResource.ProvideValue(serviceProvider);
                return(ret1);
            }
            var themeInfo = ResourceInfoAttribute.FromAssembly(rootObjectProvider.RootObject.GetType().Assembly);

            if (themeInfo != null)
            {
                switch (themeInfo.Mode)
                {
                case ResourceMode.Static:
                    var ret2 = StaticResource.ProvideValue(serviceProvider);
                    return(ret2);

                case ResourceMode.Dynamic:
                    var ret3 = DynamicResource.ProvideValue(serviceProvider);
                    return(ret3);
                }
            }
            throw new InvalidOperationException("You must mark your assembly with Elysium.ResourceInfo attribute or use Elysium.ResourceDictionary");
        }