private static bool DeserializeDependencyValueElement( XmlReader reader, string genericParameterName, string name, out InjectionParameterValueElement valueElement) { DependencyValueElement element = new DependencyValueElement(); element.DeserializeElement(reader); if (!string.IsNullOrEmpty(genericParameterName) && !string.IsNullOrEmpty(element.TypeName)) { throw new ConfigurationErrorsException( string.Format( CultureInfo.CurrentCulture, Resources.MustNotProvideATypeForDependencyIfBelongsToGeneric, name, element.Name), reader); } valueElement = element; return(true); }
private bool DeserializeDependencyValueElement(XmlReader reader) { DependencyValueElement element = new DependencyValueElement(); element.DeserializeElement(reader); valueElement = element; return(true); }
private bool DeserializeValueElement(XmlReader reader) { InstanceValueElement element = new InstanceValueElement(); element.DeserializeElement(reader); valueElement = element; return(true); }
private static bool DeserializeValueElement( XmlReader reader, out InjectionParameterValueElement valueElement) { InstanceValueElement element = new InstanceValueElement(); element.DeserializeElement(reader); valueElement = element; return(true); }
/// <summary> /// Return the InjectionMember object represented by this configuration /// element. /// </summary> /// <returns>The injection member object.</returns> public override InjectionMember CreateInjectionMember() { if (valueElement == null) { valueElement = new DependencyValueElement(); } valueElement.TypeResolver = TypeResolver; InjectionParameterValue param = valueElement.CreateParameterValue(TypeResolver.ResolveType(PropertyTypeName)); return(new InjectionProperty(Name, param)); }
public static void GuardOnlyOneValue(InjectionParameterValueElement valueElement, string name) { if (valueElement != null) { throw new InvalidOperationException( string.Format( CultureInfo.CurrentCulture, Resources.OnlyOneValueElementAllowed, name)); } }
public static bool DeserializeSingleUnrecognizedElement( string elementName, XmlReader reader, string name, string genericParameterName, ref InjectionParameterValueElement valueElement) { GuardOnlyOneValue(valueElement, name); return(DeserializeUnrecognizedElement( elementName, reader, name, genericParameterName, out valueElement)); }
private bool DeserializePolymorphicElement(string elementName, XmlReader reader) { string elementTypeName = reader.GetAttribute("elementType"); if (!string.IsNullOrEmpty(elementTypeName)) { Type elementType = Type.GetType(elementTypeName); InjectionParameterValueElement element = (InjectionParameterValueElement)Activator.CreateInstance(elementType); element.DeserializeElement(reader); valueElement = element; return(true); } return(base.OnDeserializeUnrecognizedElement(elementName, reader)); }
public static bool DeserializeUnrecognizedElement( string elementName, XmlReader reader, string name, string genericParameterName, out InjectionParameterValueElement valueElement) { string genericParameter; bool isGenericParameterArray; ExtractGenericParameter(genericParameterName, out genericParameter, out isGenericParameterArray); switch (elementName) { case "value": GuardNotGeneric(reader, genericParameterName, name); return(DeserializeValueElement( reader, out valueElement)); case "dependency": GuardNotGenericArray(reader, isGenericParameterArray, name); return(DeserializeDependencyValueElement( reader, genericParameterName, name, out valueElement)); case "array": if (!isGenericParameterArray) { GuardNotGeneric(reader, genericParameterName, name); } return(DeserializeArrayValueElement( reader, out valueElement)); default: GuardNotGeneric(reader, genericParameterName, name); return(DeserializePolymorphicElement( reader, out valueElement)); } }
private static bool DeserializePolymorphicElement( XmlReader reader, out InjectionParameterValueElement valueElement) { string elementTypeName = reader.GetAttribute("elementType"); if (!string.IsNullOrEmpty(elementTypeName)) { Type elementType = Type.GetType(elementTypeName); InjectionParameterValueElement element = (InjectionParameterValueElement)Activator.CreateInstance(elementType); element.DeserializeElement(reader); valueElement = element; return(true); } valueElement = null; return(false); }
public static InjectionParameterValue CreateParameterValue( string typeName, string genericParameterName, InjectionParameterValueElement valueElement, UnityTypeResolver typeResolver) { string genericParameter; bool isGenericParameterArray; ExtractGenericParameter(genericParameterName, out genericParameter, out isGenericParameterArray); if (!string.IsNullOrEmpty(genericParameter)) { if (!isGenericParameterArray) { if (valueElement == null) { return(new GenericParameter(genericParameter)); } else { DependencyValueElement dependencyElement = valueElement as DependencyValueElement; if (dependencyElement != null) { if (!string.IsNullOrEmpty(dependencyElement.Name)) { return(new GenericParameter(genericParameter, dependencyElement.Name)); } else { return(new GenericParameter(genericParameter)); } } else { // should not happen - checked during config deserialization throw new InvalidOperationException(Resources.InvalidConfiguration); } } } else { if (valueElement == null) { return(new GenericResolvedArrayParameter(genericParameter)); } else { ArrayValueElement arrayElement = valueElement as ArrayValueElement; if (arrayElement != null) { return(arrayElement.CreateParameterValue(genericParameter)); } else { // should not happen - checked during config deserialization throw new InvalidOperationException(Resources.InvalidConfiguration); } } } } else { if (valueElement == null) { valueElement = new DependencyValueElement(); } valueElement.TypeResolver = typeResolver; return(valueElement.CreateParameterValue(typeResolver.ResolveType(typeName))); } }