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),我們可以執行並看到失敗。 –