ソースタイプに設定されたEnum値に基づいて、Automapperがマップするコールの宛先タイプを選択する方法を見つけようとしています。Automapperは、ソースタイプの列挙型の値に基づいて宛先タイプを解決します
たとえば
public class Organisation
{
public string Name {get;set;}
public List<Metric> Metrics {get;set;}
}
public class Metric
{
public int NumericValue {get;set;}
public string TextValue {get;set;}
public MetricType MetricType {get;set;}
}
public enum MetricType
{
NumericMetric,
TextMetric
}
私は、次のオブジェクトがある場合::
今var Org = new Organisation {
Name = "MyOrganisation",
Metrics = new List<Metric>{
new Metric { Type=MetricType.TextMetric, TextValue = "Very Good!" },
new Metric { Type=MetricType.NumericMetric, NumericValue = 10 }
}
}
を、私はクラスを持っていることのviewmodelの表現にこれをマッピングする:
public class OrganisationViewModel
{
public string Name {get;set;}
public List<IMetricViewModels> Metrics {get;set;}
}
public NumericMetric : IMetricViewModels
{
public int Value {get;set;}
}
public TextMetric : IMetricViewModels
{
public string Value {get;set;}
}
次のクラスを考えます
AutoMapper.Mapを呼び出すと、1つのNumericMetricと1つのTextMetricを含むOrganisationViewModelが作成されます。
Automapperコール:
var vm = Automapper.Map<Organisation, OrganisationViewModel>(Org);
どのように私はこれをサポートするためにAutomapperの設定に行きますか?これは可能ですか? (この質問がクリアであることを願っています)
ありがとう!
私はこれを見て、2つのタイプの代わりに 'Metric'に戻ります。たとえば、 'int Value'と' string Value'の両方にIMetricViewModelsが実装されているとします。あなたのインターフェースはどのように見えますか? –
hometoast
こんにちは、この例は実際の問題よりはるかに単純です.MetricTypeにはさまざまな種類のものがたくさんあります。インタフェースは空であり、そこには私がすべて異なるビューテンプレートに解決されるもののリストを持たせるためだけにあります。 (MVC app ... Html.DisplayFor(Organisation.Metrics)は、6つまたは7つの異なるテンプレートのリストになります)。それは理にかなっているのですか? – Paul