не может отобразить пользовательский тип, используя последнюю библиотеку autoMapper в c # - PullRequest
0 голосов
/ 19 сентября 2011

Я не могу отобразить пользовательский тип, используя последнюю библиотеку autoMapper в c #. Я использую образец из примера приложения, но добавил пользовательский тип. Оба класса похожи, только кодовые имена разные. Я хочу, чтобы это был «GlobalTypeConverter», как он использовался несколько раз.

Ошибка при проверке: // Ошибка: следующие 1 свойства в TestApp.Form1 + Destination не отображаются: mycode Добавьте пользовательское выражение сопоставления, игнорируйте или переименуйте свойство в TestApp.Form1 + Source.

public class Source
{
  public string Value1 { get; set; }
  public string Value2 { get; set; }
  public string Value3 { get; set; }
  public standardCoding stdcode { get; set; }
}

public class Destination
{
  public int Value1 { get; set; }
  public DateTime Value2 { get; set; }
  public Type Value3 { get; set; }
  public myClass.code mycode { get; set; }
}

public class DateTimeTypeConverter : TypeConverter<string, DateTime>
{
  protected override DateTime ConvertCore(string source)
  {
    return System.Convert.ToDateTime(source);
  }
}

public class TypeTypeConverter : TypeConverter<string, Type>
{
  protected override Type ConvertCore(string source)
  {
    Type type = Assembly.GetExecutingAssembly().GetType(source);
    return type;
  }
}

public class standardCodingConverter : TypeConverter<standardCoding, myClass.code>
{
  protected override myClass.code ConvertCore(standardCoding source)
  {
    var result = new myClass.code();
    result.CodingSystem = source.StandardCodingSystem;
    result.Description = source.StandardCodeDescription;
    result.value = source.StandardCode;
    return result;
  }
}


public void btnAutoMapperTest_Click(object sender, EventArgs e)
{
  Mapper.CreateMap<string, int>().ConvertUsing(Convert.ToInt32);
  Mapper.CreateMap<string, DateTime>().ConvertUsing(new DateTimeTypeConverter());
  Mapper.CreateMap<string, Type>().ConvertUsing<TypeTypeConverter>();
  Mapper.CreateMap<standardCoding, myClass.code>().ConvertUsing(new standardCodingConverter());
  Mapper.CreateMap<Source, Destination>();
  Mapper.AssertConfigurationIsValid();

  var newcode = new standardCoding();
  newcode.StandardCode = "123";
  newcode.StandardCodeDescription = "my desc";
  newcode.StandardCodingSystem = "CodeSys";

  var source = new Source
  {
    Value1 = "5",
    Value2 = "01/01/2000",
    Value3 = "AutoMapperSamples.GlobalTypeConverters.GlobalTypeConverters+Destination", 
    stdcode = newcode
  };




/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "cds_dt")]
public partial class standardCoding
{

private string standardCodingSystemField;

private string standardCodeField;

private string standardCodeDescriptionField;

/// <remarks/>
public string StandardCodingSystem
{
  get
  {
    return this.standardCodingSystemField;
  }
  set
  {
    this.standardCodingSystemField = value;
  }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(DataType = "token")]
public string StandardCode
{
  get
  {
    return this.standardCodeField;
  }
  set
  {
    this.standardCodeField = value;
  }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(DataType = "token")]
public string StandardCodeDescription
{
  get
  {
    return this.standardCodeDescriptionField;
  }
  set
  {
    this.standardCodeDescriptionField = value;
  }
}
}

1 Ответ

0 голосов
/ 20 сентября 2011

Я понял это, посмотрев онлайн (пример кода "CustomValueResolvers.cs" у меня не работает).

Моя единственная неправильная строка была: ... .ForMember (src => src.DiagnosisCode,opt => opt.ResolveUsing () .FromMember (r => r.DiagnosisProcedureCode))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...