0

我是 AutoMapper 的新手

我有以下域模型。

public class Contact
{
    public string University { get; set; }

    public string GraduationYear { get; set; }
}

我不想更改域模型,并想为 GraduationYear 属性添加额外的属性。

我在我的 mvc 4 项目上创建了属性类

[System.AttributeUsage(System.AttributeTargets.Property)]
public class Mapping : System.Attribute
{
    public string Name { get; set; }
}

在名为“ContactMapping”的类上使用上述属性已创建

public class ContactMapping
{
    [Telephony.Helper.Attribute.Mapping(Name = "Graduate")]
    public string GraduationYear { get; set; }
}

我从没有自定义属性“映射”的域服务中获取联系人对象。

var contact = new ContactService().Get(contactPredicate).Single();

现在我正在做自动映射器

AutoMapper.Mapper.CreateMap<Telephony.Helper.Mapping.ContactMapping, Aurora.CustomersMvc.Domain.Contact>();

    var test = AutoMapper.Mapper.Map<Aurora.CustomersMvc.Domain.Contact>(contact);
    var contactwithCustomAttr = contact.GetType().GetProperties().Where(p => ((Telephony.Helper.Attribute.Mapping[])p.GetCustomAttributes(typeof(Telephony.Helper.Attribute.Mapping), false))
                .Any(attr => attr.ToString() == "Graduate"));

我的contactwithCustomAttr.Count() 为零。我期望返回 GraduationYear 属性,因为映射器应该应用我的自定义属性。

4

1 回答 1

0

试试这个:我认为你没有正确映射

AutoMapper.Mapper.CreateMap<Aurora.CustomersMvc.Domain.Contact, Telephony.Helper.Mapping.ContactMapping>();

var test = AutoMapper.Mapper.Map<Aurora.CustomersMvc.Domain.Contact, Telephony.Helper.Mapping.ContactMapping>(contact);
var contactwithCustomAttr = test.GetType().GetProperties().FirstOrDefault(p => ((Telephony.Helper.Attribute.Mapping[])p.GetCustomAttributes(typeof(Telephony.Helper.Attribute.Mapping), false))
            .Any(attr => attr.Name == "Graduate"));
于 2013-07-08T21:16:44.677 回答