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() の目的は何ですか?
助けていただければ幸いです、ありがとう。