迁移到 AutoMapper 5
Migrating to AutoMapper 5
我使用 AutoMapper 4.X 如下(简化片段)
Mapper.CreateMap<A,B>()
.ForMember(myB.MyProp, o => o.Foo()); // Foo is an extention method -> see below
public static void Foo<T> (this IMemberConfigurationExpression<T> config)
{
config.ResolveUsing((resolutionResult, source) =>
{
var name = resolutionResult.Context.MemberName; // this is what I want
}
}
AutoMapper 5.X 在调用 config.ResolveUsing
时不再有 resolutionResult
所以我无法从中获取我想要的信息 (MemberName
)它。
知道如何调整代码以使其与 AutoMapper 5 一起工作吗?
如果您转换为 MemberConfigurationExpression
,您将可以访问包含您想要的信息的 DestinationMember
:
public static void Foo<TSrc, TObj>(this IMemberConfigurationExpression<TSrc, TObj, object> config)
{
config.ResolveUsing((resolutionResult, source) =>
{
var memberConfExpr = config as MemberConfigurationExpression<TSrc, TObj, object>;
if (memberConfExpr == null)
return false;
var name = memberConfExpr.DestinationMember.Name;
// ...
});
}
我使用 AutoMapper 4.X 如下(简化片段)
Mapper.CreateMap<A,B>()
.ForMember(myB.MyProp, o => o.Foo()); // Foo is an extention method -> see below
public static void Foo<T> (this IMemberConfigurationExpression<T> config)
{
config.ResolveUsing((resolutionResult, source) =>
{
var name = resolutionResult.Context.MemberName; // this is what I want
}
}
AutoMapper 5.X 在调用 config.ResolveUsing
时不再有 resolutionResult
所以我无法从中获取我想要的信息 (MemberName
)它。
知道如何调整代码以使其与 AutoMapper 5 一起工作吗?
如果您转换为 MemberConfigurationExpression
,您将可以访问包含您想要的信息的 DestinationMember
:
public static void Foo<TSrc, TObj>(this IMemberConfigurationExpression<TSrc, TObj, object> config)
{
config.ResolveUsing((resolutionResult, source) =>
{
var memberConfExpr = config as MemberConfigurationExpression<TSrc, TObj, object>;
if (memberConfExpr == null)
return false;
var name = memberConfExpr.DestinationMember.Name;
// ...
});
}