我有一个域模型,其中包含两种语言的成员变量,如下所示:
public class Resource
{
public string SwedishName;
public string EnglishName;
}
为了演示,我有一个简化的模型,它被传递给一个 json 序列化器:
[JsonObject]
public class JsonResource
{
[JsonProperty]
public string Name;
}
这些是用 automapper 映射的,如下所示:
Mapper.CreateMap<Resource, JsonResource>()
.ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.SwedishName));
我的问题是,是否可以以更有条件的方式做到这一点,这取决于要求使用哪种语言?我最初的想法是这样的:
string lang = "en";
json = Mapper.Map<Resource, JsonResource>(resource, lang)
但是,似乎不可能有多个相同类型的映射?
目前我倾向于为另一种语言定义另一个相同的表示模型:
if (lang == "en")
json = Mapper.Map<Resource, EnglishJsonResource>(resource)
else
json = Mapper.Map<Resource, JsonResource>(resource)
这是一个可行的解决方案,还是有更好的方法?