0
私はDDDアプローチで単純なドメインモデルを使用しているため、インスタンスを作成する方法はコンストラクタのみです。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.
を、無視する、カスタムリゾルバを追加する、またはソース/宛先タイプを変更する の場合一致するコンストラクタは、引数なしのctorのを追加していないオプションの引数を追加、またはコンストラクタのパラメータ」
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が助けるだろう。私たちが実行して失敗することができる[要点](https://gist.github.com/lbargaoanu/9c7233441c3a3413cc2b9b9ebb5964a9)を作ってください。 –