private TryParseValueFromV8Xml ( |
||
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;
}
/// <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); }