2012-09-26 14 views
8

Kaynak türünde ayarlanan bir Enum değerine bağlı olarak, Otomatik Yanıtlayıcı'nın aranacak bir aramanın hedef türünü seçmesi için bir yol bulmaya çalışıyorum ..Otomatik tip çözücü, hedef türünü kaynak türünde bir enum değerine göre çözümle

örn. Aşağıdaki sınıflar Verilen:

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 
} 

Aşağıdaki nesneyi varsa:

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;} 
} 
:

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 } 
    } 
} 

Şimdi, sınıfları olan bunun bir ViewModel temsil etmek bu eşlemek istediğiniz

AutoMapper.Map öğesine yapılan çağrı, bir NumericMetric ve bir TextMetric içeren bir OrganisationViewModel ile sonuçlanacaktır.

Automapper çağrı:

var vm = Automapper.Map<Organisation, OrganisationViewModel>(Org); 

nasıl Automapper bunu desteklemek için yapılandırma hakkında gitmek? Mümkün mü? (Umarım bu soru açıktır)

Teşekkürler!

+0

Buna bakıp iki tür yerine 'Metric 'geri gelmeye devam ediyorum. Mesela, her iki "int Değeri" ve "Değer Değeri" nizde her ikisi de IMetricViewModels'i uygular. Arayüzün neye benziyor? – hometoast

+0

Merhaba, Örnek, asıl sorundan çok daha basittir, MetricType'da çok çeşitli farklı şeyler içeren birçok farklı tür vardır. Arabirim boş ve sadece orada farklı bir görünüm şablonuna tümüyle çözümlenecek şeylerin bir listesini görmeme izin ver. (MVC uygulaması ... Html.DisplayFor (Organisation.Metrics) 6 veya 7 farklı şablonun bir listesiyle sonuçlanacaktır). Bu mantıklı mı yoksa soruyu genişletmeli mi? – Paul

cevap

3

Tamam, metrik bölümü için bir TypeConverter ile olacağını böyle bir şey elde etmenin en iyi yolu, şu anda düşünüyorum ... gibi bir şey:

AutoMapper.Mapper.Configuration 
     .CreateMap<Organisation, OrganisationViewModel>(); 

AutoMapper.Mapper.Configuration 
     .CreateMap<Metric, IMetricViewModels>() 
     .ConvertUsing<MetricTypeConverter>(); 

Sonra TypeConverter benzer görünümde olacaktır Bu: Bu doğru yaklaşım gibi görünüyor mu? Bu, doğru yaklaşım gibi görünüyor mu? Başka rehber var mı?

+0

Bunu işe alabildiniz mi? İşe yaramayacak gibi görünmüyorum. –

İlgili konular