考慮以下幾點:調用擴展方法
public class Foo
{
public int ID {get;set;}
public Bar Bar {get;set;}
}
public class Bar
{
public int ID { get; set; }
public string Name { get; set; }
}
public class FooDetailsViewModel
{
public int ID { get; set; }
public string Bar { get; set; }
}
我希望能夠調用下面的擴展方法在映射:
public static string ToNoneString(this string s)
{
if (String.IsNullOrEmpty(s))
{
return "None";
}
else
{
return s;
}
}
問題是Foo的Bar屬性可能爲空,因此下列不起作用的原因很明顯:
Mapper.CreateMap<Foo, FooDetailsViewModel>().ForMember(dest => dest.Bar, opts => opts.MapFrom(src => src.Bar.Name.ToNoneString()));
我知道我可以在映射後在我的控制器中調用擴展方法,但我希望在創建映射時可以以某種方式執行此操作。
是否有可能將構造邏輯添加到'Foo'中,以默認的'new Bar(){ID = -1,Name = String.Empty}來初始化它,所以它不是null?您當然必須稍後再驗證,但是這會阻止空引用 – Marco 2014-12-03 19:43:53