我试图找到一种方法让Automapper根据源类型中设置的Enum值选择映射调用的目标类型。 。Automapper根据源类型中枚举的值解析目标类型
eg鉴于以下类:
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 }
}
}
现在,我想这个映射到它的视图模型表示它具有类:
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的调用将导致包含一个NumericMetric和一个TextMetric的OrganisationViewModel。
的Automapper电话:
var vm = Automapper.Map<Organisation, OrganisationViewModel>(Org);
我怎么会去配置Automapper支持呢?这可能吗? (我希望这个问题很清楚)
谢谢!
我一直在看这个,并继续回到'公制'而不是两种类型。例如,你如何同时使用'int Value'和'string Value'来实现IMetricViewModels。你的界面是什么样的? –
hometoast
嗨,这个例子比实际问题简单得多,MetricType中有很多不同类型,都包含各种不同的东西。该界面是空的,只有在那里让我有一个事情的列表,这些列表将全部解析为不同的视图模板。 (MVC应用程序... Html.DisplayFor(Organisation.Metrics)将生成6或7个不同模板的列表)。这有道理吗?还是我应该扩展这个问题? – Paul