public static object ParseFieldValue(Type modelType, string field, string fieldValue)
{
if (String.IsNullOrWhiteSpace(fieldValue) || fieldValue == "*" || fieldValue == "NULL")
{
return(null);
}
var prop = modelType.GetProperty(field, BindingFlags.Public | BindingFlags.Instance);
if (prop == null)
{
// if not corresponding property was found, it might be custom fields, they are all treated as string
return(fieldValue);
}
if (TypeHelper.IsSimpleType(prop.PropertyType))
{
return(LuceneUtility.FromFieldStringValue(fieldValue, prop.PropertyType));
}
var propTypeInfo = ModelTypeInfo.GetTypeInfo(prop.PropertyType);
if (propTypeInfo.IsDictionary)
{
return(LuceneUtility.FromFieldStringValue(fieldValue, propTypeInfo.DictionaryValueType));
}
else if (propTypeInfo.IsCollection)
{
return(LuceneUtility.FromFieldStringValue(fieldValue, propTypeInfo.ElementType));
}
return(null);
}