パラメータがdynamic
のASP.NET Coreコントローラメソッドでは、以下のようにAutomapperを使用してマップしたいと思います。この方法は、次のようになります。複数のマップを作成せずにAutomapperを使用して動的/ JObjectから任意の型にマップする
EmployerViewModel
はこのようになります
public IActionRsult Post([FromBody] dynamic model) {
// Skip validation
switch(model.src) {
case "employer"
var employerVM = _mapper.Map<EmployerViewModel>(model.data);
// Work with mapped object
break;
case "employee"
var employeeVM = _mapper.Map<EmployeeViewModel>(model.data);
// Work with mapped object
break;
}
}
:
public class EmployerViewModel {
public string CompanyName {get; set;}
public string CompanyAddress {get; set;}
}
とEmployeeViewModel
次のようになります。それはかもしれない、クライアント側からJSONデータを、受信
public class EmployeeViewModel {
public string FirstName {get; set;}
public string LastName {get; set;}
public bool Ready {get; set;}
}
次のようになります。
またはこの:
{
"src": "employee",
"data": {
"FirstName": "John",
"LastName": "Doe",
"Ready": true
}
}
今、すべては常に関係なく、JSONの値が何であるかをfalseに設定されていないboolean型のプロパティを除いて正常に動作します。私はJSON入力フォーマッタを持っています。このフォーマッタは、パラメータ内のインスタンスを構築します。私はインスタンスのタイプをチェックし、それらがNewtonsoft.Json.Linq.JObjectであることを発見しました
どのように私は正しく動作するようにboolsを得ることができますか?
TDestination IMapper.Map<TDestination>(object source)
(hereを参照)を使用して、任意の数の宛先クラスのマッピングをサポートしていきたいと思いますが、それぞれに対してAutoMapperマップを明示的に構築する必要はありません。どのようにこれを達成することができますか?
P.S.私はAutoMapper 6.2.1とASP.NET Core 1.1.3を使用しています
これはExpandoObjectなどで動作します。したがって、モデルがどのように組み合わされるかという問題です。 –
JSON入力フォーマッタは、ダイナミックパラメータモデル – Bahaa
の中にNewtonsoft.Json.Linq.JObjectインスタンスをパックします。それで、調査する必要があります。 AMに関する限り、それは機能します。 –