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

如何在C#中批量将相似类属性值赋值并忽略指定属性

批量属性赋值方案(忽略指定属性)

方法1:使用AutoMapper(推荐,简洁易维护)

AutoMapper是专门处理对象映射的类库,配置一次即可复用,非常适合多属性的对象映射场景。

操作步骤:

  1. 安装AutoMapper NuGet包:
Install-Package AutoMapper
  1. 创建映射配置,明确忽略Email属性:
var config = new MapperConfiguration(cfg =>
{
    cfg.CreateMap<UserClient, UserServer>()
       .ForMember(dest => dest.Email, opt => opt.Ignore()); // 跳过Email属性的映射
});

注:同名同类型的属性会自动完成映射,无需手动指定
3. 执行映射:

IMapper mapper = config.CreateMapper();
UserServer UServer = mapper.Map<UserServer>(UClient);

如果是ASP.NET Core项目,可将AutoMapper注册为全局服务,后续直接注入使用。

方法2:反射实现自定义批量赋值(无需第三方库)

若不想引入外部依赖,可通过反射遍历属性,自动赋值同名同类型的属性,同时跳过指定属性。

自定义工具方法:

public static void MapProperties<TSource, TTarget>(TSource source, TTarget target, params string[] ignoreProperties)
{
    var sourceProps = typeof(TSource).GetProperties(BindingFlags.Public | BindingFlags.Instance)
                                    .Where(p => p.CanRead && !ignoreProperties.Contains(p.Name));
    var targetProps = typeof(TTarget).GetProperties(BindingFlags.Public | BindingFlags.Instance)
                                    .Where(p => p.CanWrite);

    foreach (var sourceProp in sourceProps)
    {
        var targetProp = targetProps.FirstOrDefault(p => p.Name == sourceProp.Name && p.PropertyType == sourceProp.PropertyType);
        if (targetProp != null)
        {
            var value = sourceProp.GetValue(source);
            targetProp.SetValue(target, value);
        }
    }
}

使用方式:

MapProperties(UClient, UServer, "Email");

执行后,UClient中除Email外的同名同类型属性值会自动赋值给UServer。

方法3:扩展方法封装(适合固定结构场景)

如果两个类的属性结构长期稳定,可封装扩展方法实现映射,这种方式性能最优,但属性变动时需同步更新方法:

public static UserServer ToUserServer(this UserClient client)
{
    return new UserServer
    {
        Id = client.Id,
        Username = client.Username
        // 不处理Email属性
    };
}

使用方式:

UserServer UServer = UClient.ToUserServer();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:12:45