使用 JSON 文件中提供的列映射信息在运行时映射两个 类
Map two classes in runtime using column mapping information provided in a JSON file
我有两个这样的 Class。
public class InputModel
{
public int studentid { get; set; }
public string studentname { get; set; }
public string studentcity { get; set; }
}
public class OutputModel
{
public int StudentIDColumn { get; set; }
public string StudentNameColumn { get; set; }
public string StudentCityColumn { get; set; }
}
现在需求是这样的:
我会收到InputModel
Class的对象。由此,我需要创建一个 OutputModel
class.
的对象
如果我们使用像 AutoMapper 这样的库就很简单了。但问题是,列到列映射信息将通过 Json 文件提供,如下所示:
{
"studentid": "StudentIDColumn",
"studentname": "StudentNameColumn",
"studentcity": "StudentCityColumn"
}
基于 JSON 映射数据,我需要在运行时映射列并生成输出 class 对象。
我尝试使用 Automapper 映射两个 classes。但我不确定如何使用 JSON 文件在运行时执行此操作。
var MapperConfig = new MapperConfiguration(c =>
c.CreateMap<InputCSVModel, OutputIDMModel>()
.ForMember(dest => dest.StudentIDColumn, act => act.MapFrom(src => src.studentid))
.ForMember(dest => dest.StudentNameColumn, act => act.MapFrom(src => src.studentname))
.ForMember(dest => dest.StudentCityColumn, act => act.MapFrom(src => src.studentcity))
);
var mapper = new Mapper(MapperConfig);
OutputIDMModel outModel = mapper.Map<OutputIDMModel>(inputModel);
我知道使用反射可以做到这一点。但是有没有更好的方法呢?
我能够读取 JSOn 文件并像这样在自动映射器配置中传递字符串。
var MapperConfig = new MapperConfiguration(c =>
c.CreateMap<InputModel, OutputModel>()
.ForMember("StudentIDColumn", opt => opt.MapFrom("studentid"))
.ForMember("StudentNameColumn", opt => opt.MapFrom("studentname"))
.ForMember("StudentCityColumn", opt => opt.MapFrom("studentcity"))
);
我有两个这样的 Class。
public class InputModel
{
public int studentid { get; set; }
public string studentname { get; set; }
public string studentcity { get; set; }
}
public class OutputModel
{
public int StudentIDColumn { get; set; }
public string StudentNameColumn { get; set; }
public string StudentCityColumn { get; set; }
}
现在需求是这样的:
我会收到InputModel
Class的对象。由此,我需要创建一个 OutputModel
class.
如果我们使用像 AutoMapper 这样的库就很简单了。但问题是,列到列映射信息将通过 Json 文件提供,如下所示:
{
"studentid": "StudentIDColumn",
"studentname": "StudentNameColumn",
"studentcity": "StudentCityColumn"
}
基于 JSON 映射数据,我需要在运行时映射列并生成输出 class 对象。
我尝试使用 Automapper 映射两个 classes。但我不确定如何使用 JSON 文件在运行时执行此操作。
var MapperConfig = new MapperConfiguration(c =>
c.CreateMap<InputCSVModel, OutputIDMModel>()
.ForMember(dest => dest.StudentIDColumn, act => act.MapFrom(src => src.studentid))
.ForMember(dest => dest.StudentNameColumn, act => act.MapFrom(src => src.studentname))
.ForMember(dest => dest.StudentCityColumn, act => act.MapFrom(src => src.studentcity))
);
var mapper = new Mapper(MapperConfig);
OutputIDMModel outModel = mapper.Map<OutputIDMModel>(inputModel);
我知道使用反射可以做到这一点。但是有没有更好的方法呢?
我能够读取 JSOn 文件并像这样在自动映射器配置中传递字符串。
var MapperConfig = new MapperConfiguration(c =>
c.CreateMap<InputModel, OutputModel>()
.ForMember("StudentIDColumn", opt => opt.MapFrom("studentid"))
.ForMember("StudentNameColumn", opt => opt.MapFrom("studentname"))
.ForMember("StudentCityColumn", opt => opt.MapFrom("studentcity"))
);