我阅读了 ent lib 5.0 中的 MapBuilder.cs 源代码;
有些代码对我来说似乎很奇怪,我只是不知道这样做的目的是什么:
public static IMapBuilderContext<TResult> MapAllProperties()
{
IMapBuilderContext<TResult> context = new MapBuilderContext();
var properties =
from property in typeof(TResult).GetProperties(BindingFlags.Instance | BindingFlags.Public)
where IsAutoMappableProperty(property)
select property;
foreach (var property in properties)
{
context = context.MapByName(property);
}
return context;
}
在 MapAllProperties() 中,我们使用 Type.GetProperties() 获取属性,然后,在 MapByName() 中,我们使用称为 NormalizePropertyInfo() 的方法来获取“另一个”属性。我的意思是再次调用 Type.GetProperty() !!!:
private static PropertyInfo NormalizePropertyInfo(PropertyInfo property)
{
if (property == null) throw new ArgumentNullException("property");
return typeof(TResult).GetProperty(property.Name);
}
为什么需要再次调用 GetProperty()?NormalizePropertyInfo() 的目的是什么?
任何帮助将不胜感激,谢谢。