Esempio n. 1
0
        public IResourceManager GetResourceManager(Type objectType, bool includeHierarchy)
        {
            ArgumentUtility.CheckNotNull("objectType", objectType);
            ArgumentUtility.CheckNotNull("includeHierarchy", includeHierarchy);

            var targetType           = MixinTypeUtility.GetUnderlyingTargetType(objectType);
            var result               = s_resolver.Value.Resolve(targetType);
            var mixinResourceManager = s_mixinGlobalizationService.Value.GetResourceManager(TypeAdapter.Create(targetType));

            if (includeHierarchy)
            {
                if (result.IsNull && mixinResourceManager.IsNull)
                {
                    throw new ResourceException(string.Format("Type {0} and its base classes do not define a resource attribute.", objectType.FullName));
                }
                return(ResourceManagerSet.Create(result.DefinedResourceManager, mixinResourceManager, result.InheritedResourceManager));
            }

            if (result.IsNull && mixinResourceManager.IsNull)
            {
                throw new ResourceException(string.Format("Type {0} and its base classes do not define a resource attribute.", objectType.FullName));
            }

            if (result.DefinedResourceManager.IsNull && !mixinResourceManager.IsNull)
            {
                return(mixinResourceManager);
            }

            if (result.DefinedResourceManager.IsNull) // we already know there is a resource defined on a base-type so no additional checks are required.
            {
                return(MultiLingualResources.GetResourceManager(targetType.BaseType, false));
            }

            return(ResourceManagerSet.Create(result.DefinedResourceManager, mixinResourceManager));
        }
Esempio n. 2
0
        public void GetResourceManager_WithTypeDefiningAndInheritingMultipleResources_AndDoNotGetInheritedResources_ReturnsResourceManagersInOrderOfDefinition()
        {
            var resourceManager = MultiLingualResources.GetResourceManager(typeof(DerivedClassWithMultiLingualResourcesAttributes), false);

            Assert.That(resourceManager, Is.InstanceOf <ResourceManagerSet>());
            var resourceManagerSet = (ResourceManagerSet)resourceManager;

            Assert.That(
                resourceManagerSet.ResourceManagers.Select(rm => rm.Name),
                Is.EquivalentTo(new[] { NamedResources.Four, NamedResources.Five }));
        }
Esempio n. 3
0
        protected virtual IResourceManager GetResourceManager()
        {
            Type type = this.GetType();

            if (MultiLingualResources.ExistsResource(type))
            {
                return(MultiLingualResources.GetResourceManager(type, true));
            }
            else
            {
                return(null);
            }
        }
Esempio n. 4
0
        public void GetResourceManager_TypeWithOnlyInheritedResources_AndDoNotGetInheritedResources_DoesNotThrowResourceExceptionBecauseOfBug()
        {
            var resourceManager = MultiLingualResources.GetResourceManager(typeof(DerivedClassWithoutMultiLingualResourcesAttributes), false);

            Assert.That(resourceManager.IsNull, Is.False);
            Assert.That(resourceManager, Is.InstanceOf <ResourceManagerSet>());

            var resourceManagerSet = (ResourceManagerSet)resourceManager;

            Assert.That(
                resourceManagerSet.ResourceManagers.Select(rm => rm.Name),
                Is.EquivalentTo(new[] { NamedResources.Four, NamedResources.Five }));
        }
Esempio n. 5
0
        public void GetResourceManager_TypeWithResources_ReturnsResources()
        {
            var resourceManager = MultiLingualResources.GetResourceManager(typeof(ClassWithMultiLingualResourcesAttributes), true);

            Assert.That(resourceManager.IsNull, Is.False);
            Assert.That(resourceManager, Is.InstanceOf <ResourceManagerSet>());

            var resourceManagerSet = (ResourceManagerSet)resourceManager;

            Assert.That(
                resourceManagerSet.ResourceManagers.Select(rm => rm.Name),
                Is.EquivalentTo(new[] { NamedResources.One, NamedResources.Two, NamedResources.Three }));
        }
Esempio n. 6
0
 public void GetResourceManager_TypeWithoutResources_ThrowsResourceException()
 {
     Assert.That(
         () => MultiLingualResources.GetResourceManager(typeof(ClassWithoutMultiLingualResourcesAttributes), true),
         Throws.TypeOf <ResourceException>());
 }