Ejemplo n.º 1
0
            internal XStoredProcedureResponse(StoredProcedureResponse spResponse, BindableDynamicObject.XmlSettings xmlSettings)
            {
                if (xmlSettings == null)
                {
                    xmlSettings = new BindableDynamicObject.XmlSettings();
                }

                _OriginalResponse = spResponse ?? new StoredProcedureResponse(xmlSettings);

                _ResultSets = new XResultSets(_OriginalResponse.ResultSets);

                if (_OriginalResponse.ReturnValue != null)
                {
                    _ReturnValue = new XValue(_OriginalResponse.ReturnValue, xmlSettings);
                }
            }
Ejemplo n.º 2
0
 internal XValue(object simpleValue, BindableDynamicObject.XmlSettings xmlSettings)
 {
     _Value       = simpleValue;
     _XmlSettings = xmlSettings ?? new BindableDynamicObject.XmlSettings(true);
 }
Ejemplo n.º 3
0
 public StoredProcedureResponse(BindableDynamicObject.XmlSettings xmlSettings)
 {
     ResultSets   = new List <IList <BindableDynamicObject> >();
     _xmlSettings = xmlSettings ?? new BindableDynamicObject.XmlSettings();
 }
Ejemplo n.º 4
0
 internal static void ReadTo(this XElement xe, IDictionary <string, object> dynamicObject, BindableDynamicObject.XmlSettings xmlSettings)
 {
     if (xmlSettings.IsImplicit())
     {
         xe.ReadAttributes(dynamicObject);
         xe.ReadElements(dynamicObject, xmlSettings);
     }
     else
     if (xmlSettings.SerializePropertyAsAttribute)
     {
         xe.ReadAttributes(dynamicObject);
     }
     else
     {
         xe.ReadElements(dynamicObject, xmlSettings);
     }
 }
Ejemplo n.º 5
0
        private static void ReadElements(this XElement xe, IDictionary <string, object> dynamicObject, BindableDynamicObject.XmlSettings xmlSettings)
        {
            XNamespace defaultNamespace = xe.GetDefaultNamespace();

            foreach (var e in xe.Elements().Where(e => e.Name.Namespace == defaultNamespace))
            {
                dynamicObject[e.Name.LocalName] = e.ReadValue(xmlSettings) ?? DBNull.Value;
            }
        }
Ejemplo n.º 6
0
        internal static object ReadValue(this XElement xe, BindableDynamicObject.XmlSettings xmlSettings)
        {
            if ((bool?)xe.Attribute(XnNil) ?? false)
            {
                return(null);
            }

            string declaredType = null;

            switch (xmlSettings.TypeSchema)
            {
            case BindableDynamicObject.XmlSettings.DataTypeSchema.Xsd:
                declaredType = xe.GetXsdTypeAttributeString();
                if (string.IsNullOrEmpty(declaredType))
                {
                    if (xmlSettings.IsImplicit())
                    {
                        declaredType = xe.GetNetTypeAttributeString();
                    }
                }
                else
                {
                    try { return(_XsdDataContractSerializer.ReadObject(xe.CreateReader(), false)); }
                    catch { }
                }
                break;

            case BindableDynamicObject.XmlSettings.DataTypeSchema.Net:
                declaredType = xe.GetNetTypeAttributeString();
                if (declaredType == null && xmlSettings.IsImplicit())
                {
                    declaredType = xe.GetXsdTypeAttributeString();
                }
                break;

            default:
                if (xmlSettings.IsImplicit())
                {
                    declaredType = xe.GetXsdTypeAttributeString();
                    if (string.IsNullOrEmpty(declaredType))
                    {
                        declaredType = xe.GetNetTypeAttributeString();
                    }
                    else
                    {
                        try { return(_XsdDataContractSerializer.ReadObject(xe.CreateReader(), false)); }
                        catch { }
                    }
                }
                break;
            }

            Type valueType = GetXsdType(declaredType);

            if (valueType == typeof(string))
            {
                return(xe.Value);
            }

            try
            {
                return(DBConvert.ChangeType(xe.Value, valueType));
            }
            catch
            {
                return(xe.Value);
            }
        }
Ejemplo n.º 7
0
        internal static object ReadValue(this XmlReader reader, BindableDynamicObject.XmlSettings xmlSettings)
        {
            if (reader.IsNilElement())
            {
                reader.Skip();
                return(null);
            }

            string declaredType = null;

            switch (xmlSettings.TypeSchema)
            {
            case BindableDynamicObject.XmlSettings.DataTypeSchema.Xsd:
                declaredType = reader.GetAttribute(XsdTypeAttributeName, XmlSchema.InstanceNamespace);
                if (string.IsNullOrEmpty(declaredType))
                {
                    if (xmlSettings.IsImplicit())
                    {
                        declaredType = reader.GetAttribute(NetTypeAttributeName, NsNet);
                        if (!string.IsNullOrEmpty(declaredType))
                        {
                            return(_NetDataContractSerializer.ReadObject(reader, false));
                        }
                    }
                }
                else
                {
                    return(_XsdDataContractSerializer.ReadObject(reader, false));
                }
                break;

            case BindableDynamicObject.XmlSettings.DataTypeSchema.Net:
                declaredType = reader.GetAttribute(NetTypeAttributeName, NsNet);
                if (string.IsNullOrEmpty(declaredType))
                {
                    if (xmlSettings.IsImplicit())
                    {
                        declaredType = reader.GetAttribute(XsdTypeAttributeName, XmlSchema.InstanceNamespace);
                    }
                    if (!string.IsNullOrEmpty(declaredType))
                    {
                        return(_XsdDataContractSerializer.ReadObject(reader, false));
                    }
                }
                else
                {
                    return(_NetDataContractSerializer.ReadObject(reader, false));
                }
                break;

            default:
                if (xmlSettings.IsImplicit())
                {
                    declaredType = reader.GetAttribute(XsdTypeAttributeName, XmlSchema.InstanceNamespace);
                    if (string.IsNullOrEmpty(declaredType))
                    {
                        declaredType = reader.GetAttribute(NetTypeAttributeName, NsNet);
                        if (!string.IsNullOrEmpty(declaredType))
                        {
                            return(_NetDataContractSerializer.ReadObject(reader, false));
                        }
                    }
                    else
                    {
                        return(_XsdDataContractSerializer.ReadObject(reader, false));
                    }
                }
                break;
            }

            return(reader.ReadElementContentAsString());
        }
Ejemplo n.º 8
0
        internal static BindableDynamicObject ReadDynamicObject(this XmlReader reader, BindableDynamicObject.XmlSettings xmlSettings)
        {
            if (reader.IsNilElement())
            {
                reader.Skip();
                return(null);
            }

            BindableDynamicObject bindableDynamicObject = new BindableDynamicObject(null, xmlSettings);

            (bindableDynamicObject as IXmlSerializable).ReadXml(reader);

            return(bindableDynamicObject);
        }
Ejemplo n.º 9
0
        private static void ReadElements(this XmlReader reader, IDictionary <string, object> dynamicObject, BindableDynamicObject.XmlSettings xmlSettings)
        {
            string ns    = reader.NamespaceURI;
            int    depth = reader.Depth + 1;

            if (reader.ReadToFirstChildElement())
            {
                while (reader.Depth >= depth)
                {
                    if (reader.NodeType == XmlNodeType.Element && reader.Depth == depth && reader.NamespaceURI == ns)
                    {
                        dynamicObject[reader.LocalName] = reader.ReadValue(xmlSettings) ?? DBNull.Value;
                    }
                    else
                    {
                        reader.Read();
                    }
                }

                reader.Skip();
            }
        }