本文整理汇总了C#中BLToolkit.Mapping.MapMemberInfo.TryGetOrigValue方法的典型用法代码示例。如果您正苦于以下问题:C# MapMemberInfo.TryGetOrigValue方法的具体用法?C# MapMemberInfo.TryGetOrigValue怎么用?C# MapMemberInfo.TryGetOrigValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BLToolkit.Mapping.MapMemberInfo
的用法示例。
在下文中一共展示了MapMemberInfo.TryGetOrigValue方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: MapFrom
protected object MapFrom(object value, MapMemberInfo mapInfo)
{
if (mapInfo == null) throw new ArgumentNullException("mapInfo");
if (value == null)
return mapInfo.NullValue;
if (mapInfo.Trimmable && value is string)
value = value.ToString().TrimEnd(_trim);
if (mapInfo.MapValues != null)
{
object origValue;
if (mapInfo.TryGetOrigValue(value, out origValue))
return origValue;
// 2012-09-18 ili: this is too slow when we have for ex. enum with 50+ values
//
//var comp = (IComparable)value;
//foreach (var mv in mapInfo.MapValues)
//foreach (var mapValue in mv.MapValues)
//{
// try
// {
// if (comp.CompareTo(mapValue) == 0)
// return mv.OrigValue;
// }
// catch
// {
// }
//}
// Default value.
//
if (mapInfo.DefaultValue != null)
return mapInfo.DefaultValue;
}
var valueType = value.GetType();
var memberType = mapInfo.Type;
if (!TypeHelper.IsSameOrParent(memberType, valueType))
{
if (memberType.IsGenericType)
{
var underlyingType = Nullable.GetUnderlyingType(memberType);
if (valueType == underlyingType)
return value;
memberType = underlyingType;
}
if (memberType.IsEnum)
{
var underlyingType = mapInfo.MemberAccessor.UnderlyingType;
if (valueType != underlyingType)
//value = _mappingSchema.ConvertChangeType(value, underlyingType);
return MapFrom(MappingSchema.ConvertChangeType(value, underlyingType), mapInfo);
//value = Enum.Parse(type, Enum.GetName(type, value));
value = Enum.ToObject(memberType, value);
}
else
{
value = MappingSchema.ConvertChangeType(value, memberType);
}
}
return value;
}