gpt4 book ai didi

c# - 所有成员的 Automapper normailzation

转载 作者:行者123 更新时间:2023-11-30 16:01:42 25 4
gpt4 key购买 nike

是否有一些简短的方法可以对所有字符串类型属性使用规范化方法?

例如我有两个类:

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

不是为每个属性单独配置规范化方法,是否可以为所有属性配置一次?

最佳答案


是的,您会使用 custom type converter :

Mapper.Initialize(cfg => {
cfg.CreateMap<TextSource, Text>();
cfg.CreateMap<string, string>().ConvertUsing(s => s.Normalize());
});

这告诉 AutoMapper 无论何时将字符串映射到字符串,然后应用 Normalize() 方法。

请注意,这将应用于所有 字符串转换,而不仅仅是TextSourceText 映射中的字符串转换。

关于c# - 所有成员的 Automapper normailzation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38433087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com