1

我阅读了 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() 的目的是什么?

任何帮助将不胜感激,谢谢。

4

0 回答 0