public GenericValueType(object value) { if (value == null) { Item = new NullType(); ItemElementName = ItemChoiceType.Null; } else { Type valueType = value.GetType(); if (valueType == typeof(byte[])) { Item = value; ItemElementName = ItemChoiceType.Base64Binary; } else if (valueType == typeof(bool)) { Item = value; ItemElementName = ItemChoiceType.Boolean; } else if (valueType == typeof(sbyte)) { Item = value; ItemElementName = ItemChoiceType.Byte; } else if (valueType == typeof(ushort)) { Item = value; ItemElementName = ItemChoiceType.Character; } else if (valueType == typeof(DateTime)) { Item = value; ItemElementName = ItemChoiceType.DateTime; } else if (valueType == typeof(float)) { Item = value; ItemElementName = ItemChoiceType.Float; } else if (valueType == typeof(decimal)) { Item = value; ItemElementName = ItemChoiceType.Decimal; } else if (valueType == typeof(double)) { Item = value; ItemElementName = ItemChoiceType.Double; } else if (valueType == typeof(int)) { Item = value; ItemElementName = ItemChoiceType.Int; } else if (valueType == typeof(long)) { Item = value; ItemElementName = ItemChoiceType.Long; } else if (valueType == typeof(short)) { Item = value; ItemElementName = ItemChoiceType.Short; } else if (valueType == typeof(string)) { Item = value; ItemElementName = ItemChoiceType.String; } else if (valueType == typeof(Uri)) { Item = value.ToString(); ItemElementName = ItemChoiceType.URI; } else if (valueType == typeof(Guid)) { Item = value.ToString(); ItemElementName = ItemChoiceType.UUID; } else if (valueType == typeof(TimeSpan)) { Item = value.ToString(); ItemElementName = ItemChoiceType.Duration; } else if (valueType.GetInterface("IDictionary`2") != null) { Item = new TypedMapType((IDictionary)value); ItemElementName = ItemChoiceType.TypedMap; } else if (typeof(IDictionary).IsAssignableFrom(valueType)) { Item = new MapType((IDictionary)value); ItemElementName = ItemChoiceType.Map; } else if (valueType.GetInterface("ICollection`1") != null) { Item = new TypedMultipleValueType((ICollection)value); ItemElementName = ItemChoiceType.TypedList; } else if (typeof(ICollection).IsAssignableFrom(valueType)) { Item = new MultipleValueType((ICollection)value); ItemElementName = ItemChoiceType.List; } else if (valueType == typeof(XmlQualifiedName)) { Item = value; ItemElementName = ItemChoiceType.QName; } else if (valueType == typeof(ObjectName)) { Item = ObjectNameSelector.CreateEndpointAddress((ObjectName)value); ItemElementName = ItemChoiceType.EndpointReference; } else if (valueType == typeof(RoleInfo)) { Item = new ManagedResourceRoleInfo((RoleInfo)value); ItemElementName = ItemChoiceType.ManagedResourceRoleInfo; } else if (valueType == typeof(RoleResult)) { Item = new ManagedResourceRoleResult((RoleResult)value); ItemElementName = ItemChoiceType.ManagedResourceRoleResult; } else if (typeof(ITabularData).IsAssignableFrom(valueType)) { Item = new TabularDataValueType((ITabularData)value); ItemElementName = ItemChoiceType.TabularDataValue; } else if (typeof(ICompositeData).IsAssignableFrom(valueType)) { Item = new CompositeDataValueType((ICompositeData)value); ItemElementName = ItemChoiceType.CompositeDataValue; } else if (typeof(OpenType).IsAssignableFrom(valueType)) { Item = OpenDataType_Type.Serialize(value, out itemElementNameField); } else { throw new NotSupportedException("Not supported type in serialization: " + valueType); } } }
public GenericValueType(object value) { if (value == null) { Item = new NullType(); ItemElementName = ItemChoiceType.Null; } else { Type valueType = value.GetType(); if (valueType == typeof(byte[])) { Item = value; ItemElementName = ItemChoiceType.Base64Binary; } else if (valueType == typeof(bool)) { Item = value; ItemElementName = ItemChoiceType.Boolean; } else if (valueType == typeof(sbyte)) { Item = value; ItemElementName = ItemChoiceType.Byte; } else if (valueType == typeof(ushort)) { Item = value; ItemElementName = ItemChoiceType.Character; } else if (valueType == typeof(DateTime)) { Item = value; ItemElementName = ItemChoiceType.DateTime; } else if (valueType == typeof(float)) { Item = value; ItemElementName = ItemChoiceType.Float; } else if (valueType == typeof(decimal)) { Item = value; ItemElementName = ItemChoiceType.Decimal; } else if (valueType == typeof(double)) { Item = value; ItemElementName = ItemChoiceType.Double; } else if (valueType == typeof(int)) { Item = value; ItemElementName = ItemChoiceType.Int; } else if (valueType == typeof(long)) { Item = value; ItemElementName = ItemChoiceType.Long; } else if (valueType == typeof(short)) { Item = value; ItemElementName = ItemChoiceType.Short; } else if (valueType == typeof(string)) { Item = value; ItemElementName = ItemChoiceType.String; } else if (valueType == typeof(Uri)) { Item = value.ToString(); ItemElementName = ItemChoiceType.URI; } else if (valueType == typeof(Guid)) { Item = value.ToString(); ItemElementName = ItemChoiceType.UUID; } else if (valueType == typeof(TimeSpan)) { Item = value.ToString(); ItemElementName = ItemChoiceType.Duration; } else if (valueType.GetInterface("IDictionary`2") != null) { Item = new TypedMapType((IDictionary)value); ItemElementName = ItemChoiceType.TypedMap; } else if (typeof(IDictionary).IsAssignableFrom(valueType)) { Item = new MapType((IDictionary)value); ItemElementName = ItemChoiceType.Map; } else if (valueType.GetInterface("ICollection`1") != null) { Item = new TypedMultipleValueType((ICollection)value); ItemElementName = ItemChoiceType.TypedList; } else if (typeof(ICollection).IsAssignableFrom(valueType)) { Item = new MultipleValueType((ICollection)value); ItemElementName = ItemChoiceType.List; } else if (valueType == typeof(XmlQualifiedName)) { Item = value; ItemElementName = ItemChoiceType.QName; } else if (valueType == typeof(ObjectName)) { Item = ObjectNameSelector.CreateEndpointAddress((ObjectName)value); ItemElementName = ItemChoiceType.EndpointReference; } else if (valueType == typeof(RoleInfo)) { Item = new ManagedResourceRoleInfo((RoleInfo) value); ItemElementName = ItemChoiceType.ManagedResourceRoleInfo; } else if (valueType == typeof(RoleResult)) { Item = new ManagedResourceRoleResult((RoleResult) value); ItemElementName = ItemChoiceType.ManagedResourceRoleResult; } else if (typeof(ITabularData).IsAssignableFrom(valueType)) { Item = new TabularDataValueType((ITabularData)value); ItemElementName = ItemChoiceType.TabularDataValue; } else if (typeof(ICompositeData).IsAssignableFrom(valueType)) { Item = new CompositeDataValueType((ICompositeData)value); ItemElementName = ItemChoiceType.CompositeDataValue; } else if (typeof(OpenType).IsAssignableFrom(valueType)) { Item = OpenDataType_Type.Serialize(value, out itemElementNameField); } else throw new NotSupportedException("Not supported type in serialization: "+valueType); } }