Enterra.V8x1C.DOM.TypeInfo.TryParseValueFromV8Xml C# (CSharp) Method

TryParseValueFromV8Xml() private method

private TryParseValueFromV8Xml ( Session session, string strValue, object &value ) : bool
session Session
strValue string
value object
return bool
        internal bool TryParseValueFromV8Xml(Session session, string strValue, out object value)
        {
            value = null;

            switch (Type)
            {
                case TypeEnum.Boolean:
                    {
                        bool bv;
                        if (bool.TryParse(strValue, out bv))
                        {
                            value = bv;
                            return true;
                        }
                    }
                    break;
                case TypeEnum.Date:
                    {
                        DateTime dt;
                        if (DateTime.TryParse(strValue, out dt))
                        {
                            value = dt;
                            return true;
                        }
                    }
                    break;
                case TypeEnum.String:
                    value = strValue;
                    return true;

                case TypeEnum.Decimal:
                    {
                        decimal dc;
                        if (decimal.TryParse(strValue, NumberStyles.Number, CultureInfo.InvariantCulture, out dc))
                        {
                            value = dc;
                            return true;
                        }
                    }
                    break;

                case TypeEnum.CatalogRef:
                    {
                        if (string.IsNullOrEmpty(strValue))
                        {
                            value = null;
                            return true;
                        }

                        value = new CatalogRef(session, ReferenceTypeName, strValue);
                    }
                    return true;
                case TypeEnum.DocumentRef:
                    {
                        if (string.IsNullOrEmpty(strValue))
                        {
                            value = null;
                            return true;
                        }

                        value = new DocumentRef(session, ReferenceTypeName, strValue);
                    }
                    return true;
                case TypeEnum.EnumRef:
                    {
                        if (string.IsNullOrEmpty(strValue))
                        {
                            value = null;
                            return true;
                        }

                        value = new EnumRef(session, ReferenceTypeName, strValue);
                    }
                    return true;
            }
            
            return false;
        }

Usage Example

Beispiel #1
0
        /// <summary>
        /// Parse V8Xml value
        /// </summary>
        /// <param name="valueTag"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        internal bool TryParseV8XmlValue(XmlElement valueTag, out object value)
        {
            if (valueTag.GetAttribute(V8XmlXsiNilAttr) == "true")
            {
                value = null;
                return(true);
            }

            string typeStr = valueTag.GetAttribute(V8XmlXsiTypeAttr);

            {
                TypeInfo valueType = TypeInfo.LoadFromV8Xml(typeStr);
                if (valueType != null &&
                    valueType.Type != TypeEnum.Unknown &&
                    valueType.TryParseValueFromV8Xml(Session, valueTag.InnerText, out value)
                    )
                {
                    return(true);
                }
            }

            foreach (var valueType in Types)
            {
                if (valueType.TryParseValueFromV8Xml(Session, valueTag.InnerText, out value))
                {
                    return(true);
                }
            }

            value = null;
            return(false);
        }