0
我在DDD方法中有简单的域模型,因此创建实例的唯一方法是使用构造函数。Automapper和使用DDD验证配置
public CashCaseDifference(
double amount,
double originalAmount,
double originalFcyAmount,
CashCaseDifferenceCurrency currency,
CashCaseDifferenceSource source,
CashCaseDifferenceType type)
{
this.Amount = amount;
this.OriginalAmount = originalAmount;
this.OriginalFcyAmount = originalFcyAmount;
this.Currency = currency;
this.Source = source;
this.Type = type;
}
我试图单元测试配置时遇到问题。
映射简档:
this.CreateMap<CashCaseOut, CashCaseDifference>()
.ConstructUsing(source => new CashCaseDifference(
source.Amount.GetValueOrDefault(),
source.OriginalAmount.GetValueOrDefault(),
source.OriginalFcyAmount.GetValueOrDefault(),
(CashCaseDifferenceCurrency) source.Currency.GetValueOrDefault(),
(CashCaseDifferenceSource) source.SourceOfDifference.GetValueOrDefault(),
(CashCaseDifferenceType) source.Type.GetValueOrDefault()));
而我的单元测试方法:
Mapper.Initialize(
cfg => { cfg.AddProfile(new CashCaseOutToCashCaseDifference()); });
Mapper.AssertConfigurationIsValid(););
它返回错误性质没有映射:
Unmapped members were found. Review the types and members below.
“添加自定义映射表达式,忽略,添加自定义解析器或修改源/目标类型 没有匹配的构造函数中添加一个无参数的构造函数,加上可选的参数,或者映射所有构造函数参数”
Unmapped properties: Source
编辑的:
建设不能正常工作。
Mapper.Initialize(cfg =>
{
cfg.AddProfile(new CashCaseOutToCashCaseDifference());
});
Mapper.AssertConfigurationIsValid();
public CashCaseOutToCashCaseDifference()
{
this.CreateMap<
CashDiffMS.Client.Models.CashCaseOut,
Core.CashCases.Domain.Differences.CashCaseDifference>()
.ForCtorParam("amount", opt => opt.MapFrom(src => src.Amount))
.ForCtorParam("originalAmount", opt => opt.MapFrom(src => src.OriginalAmount))
.ForCtorParam("originalFcyAmount", opt => opt.MapFrom(src => src.OriginalFcyAmount))
.ForCtorParam("currency", opt => opt.MapFrom(src => src.Currency))
.ForCtorParam("source", opt => opt.MapFrom(src => src.SourceOfDifference))
.ForCtorParam("type", opt => opt.MapFrom(src => src.Type));
}
public CashCaseDifference(
double amount,
double originalAmount,
double originalFcyAmount,
CashCaseDifferenceCurrency currency,
CashCaseDifferenceSource source,
CashCaseDifferenceType type)
{
this.Amount = amount;
this.OriginalAmount = originalAmount;
this.OriginalFcyAmount = originalFcyAmount;
this.Currency = currency;
this.Source = source;
this.Type = type;
}
结果是一样的:Unmapped properties: Source
它不工作。 – Nerf
这应该工作。 repro会有所帮助。制作[gist](https://gist.github.com/lbargaoanu/9c7233441c3a3413cc2b9b9ebb5964a9),我们可以执行并看到失败。 –