You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC API中如何快速将列表赋值给DevelopmentsClass?

嘿,我来给你几个高效的方案,不用重写一堆代码就能快速把developments实例赋值给DevelopmentsClass对象:

方案1:用对象映射库(推荐,最省心)

像AutoMapper这种成熟的对象映射库是最优解,只需要一次配置,后续就能一键完成映射,完全不用手动写赋值代码:

首先安装AutoMapper NuGet包:

Install-Package AutoMapper

然后在项目启动时(比如Program.cs或者Startup.cs)配置一次映射关系:

var mapperConfig = new MapperConfiguration(cfg =>
{
    // 配置从你的原始developments类型到DevelopmentsClass的映射
    cfg.CreateMap<YourOriginalDevelopmentsType, DevelopmentsClass>();
});
// 全局注入或者直接实例化
IMapper mapper = mapperConfig.CreateMapper();

之后在控制器里直接调用映射:

// 把developments转换成DevelopmentsClass实例
DevelopmentsClass targetInstance = mapper.Map<DevelopmentsClass>(developments);

AutoMapper会自动匹配同名同类型的属性,就算你调整了XmlRoot特性,只要属性结构没大改,这个方法完全适用。

方案2:用反射写通用映射方法(无第三方依赖)

如果不想引入外部库,可以自己写一个基于反射的通用扩展方法,一次性解决所有同结构对象的赋值问题:

public static class ObjectMappingExtensions
{
    public static TTarget MapTo<TTarget>(this object source) where TTarget : new()
    {
        if (source == null) return default;
        
        var target = new TTarget();
        var sourceProperties = source.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
        var targetProperties = typeof(TTarget).GetProperties(BindingFlags.Public | BindingFlags.Instance);

        foreach (var sourceProp in sourceProperties)
        {
            // 匹配同名同类型的可写属性
            var targetProp = targetProperties.FirstOrDefault(p => 
                p.Name.Equals(sourceProp.Name, StringComparison.OrdinalIgnoreCase) 
                && p.PropertyType == sourceProp.PropertyType 
                && p.CanWrite);
            
            if (targetProp != null)
            {
                targetProp.SetValue(target, sourceProp.GetValue(source));
            }
        }

        return target;
    }
}

然后在控制器里直接用扩展方法:

DevelopmentsClass targetInstance = developments.MapTo<DevelopmentsClass>();

这个方法适合轻量场景,不用加任何依赖,而且可以复用在其他对象映射上。

方案3:简化手动初始化(属性少的情况)

如果你的类属性不多,或者只有少数属性需要调整,可以用VS的快速生成功能来减少手动代码:

右键点击初始化器的大括号内部 -> 选择「快速操作和重构」-> 「生成字段/属性初始化器」,VS会自动帮你把所有同名属性的赋值代码补全:

DevelopmentsClass targetInstance = new DevelopmentsClass
{
    // VS会自动生成类似下面的代码
    DevelopmentId = developments.DevelopmentId,
    Name = developments.Name,
    Description = developments.Description
    // ... 其他属性
};

这种方法虽然需要手动确认,但胜在直观,适合属性数量不多的场景。


内容的提问来源于stack exchange,提问作者user979331

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:34:53