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)); }
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 })); }
protected virtual IResourceManager GetResourceManager() { Type type = this.GetType(); if (MultiLingualResources.ExistsResource(type)) { return(MultiLingualResources.GetResourceManager(type, true)); } else { return(null); } }
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 })); }
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 })); }
public void GetResourceManager_TypeWithoutResources_ThrowsResourceException() { Assert.That( () => MultiLingualResources.GetResourceManager(typeof(ClassWithoutMultiLingualResourcesAttributes), true), Throws.TypeOf <ResourceException>()); }