C# 所有成员的自动映射规范化
在所有字符串类型属性上使用规范化方法有什么捷径吗 例如,我有两门课:C# 所有成员的自动映射规范化,c#,automapper,C#,Automapper,在所有字符串类型属性上使用规范化方法有什么捷径吗 例如,我有两门课: public class Text { public string Header { get; set; } public string Content { get; set; } } public class TextSource { public string Header { get; set; } public string Content { get; set; } } 我想让他们
public class Text
{
public string Header { get; set; }
public string Content { get; set; }
}
public class TextSource
{
public string Header { get; set; }
public string Content { get; set; }
}
我想让他们映射:
[TestMethod]
public void ShouldMapTextSourceToText()
{
var TextSource = new TextSource()
{
Content = "<![CDATA[Content]]>",
Header = "<![CDATA[Header]]>",
};
Mapper.Initialize(cfg => cfg.CreateMap<TextSource, Text>()
.ForMember(dest => dest.Content, opt => opt.MapFrom(s => s.Content.Normalize()))
.ForMember(dest => dest.Header, opt => opt.MapFrom(s => s.Header.Normalize())));
var text = Mapper.Map<Text>(TextSource);
Assert.AreEqual("Content", text.Content);
Assert.AreEqual("Header", text.Header);
}
[TestMethod]
public void应为mapTextSourceToText()
{
var TextSource=new TextSource()
{
Content=“”,
标题=”,
};
初始化(cfg=>cfg.CreateMap())
.FormMember(dest=>dest.Content,opt=>opt.MapFrom(s=>s.Content.Normalize())
.ForMember(dest=>dest.Header,opt=>opt.MapFrom(s=>s.Header.Normalize());
var text=Mapper.Map(TextSource);
Assert.AreEqual(“内容”,text.Content);
Assert.AreEqual(“Header”,text.Header);
}
是否可以对所有属性执行一次规范化操作,而不是单独为每个属性配置规范化方法?是的,您将使用:
Mapper.Initialize(cfg=>{
CreateMap();
CreateMap().ConvertUsing(s=>s.Normalize());
});
这告诉AutoMapper,无论何时将字符串映射到字符串,都要应用Normalize()
方法
请注意,这将适用于所有字符串转换,而不仅仅是TextSource
到Text
映射中的转换
Mapper.Initialize(cfg => {
cfg.CreateMap<TextSource, Text>();
cfg.CreateMap<string, string>().ConvertUsing(s => s.Normalize());
});