遵循Mapperly入门指南编写代码却触发CS0766错误,求解决办法
解决Mapperly在.NET Framework中触发CS0766错误的方案
问题根源
.NET Framework 4.7.2/4.8.1最高仅支持C# 7.3,而Mapperly依赖C# 9及以上版本的分部方法特性——C# 9才放开了分部方法必须返回void的限制,旧版C#严格要求分部方法返回值为void,这就是你遇到CS0766: partial methods must return void错误的核心原因。
可行解决途径
迁移到.NET 5+(推荐)
直接将项目升级到.NET 5或更高版本(如.NET 6/.NET 7/.NET 8),这些版本原生支持C# 9+,完全适配Mapperly的代码生成逻辑,既能解决该错误,还能获得更优的性能和框架特性支持。手动编写映射逻辑(无法升级框架时)
放弃Mapperly的自动代码生成,手动实现属性映射:public class ClientesMapper { public DatosCliente ToDatosClientes(CLIENTES origen) { if (origen == null) return null; return new DatosCliente { // 逐个映射属性,示例: ClienteId = origen.CLIENTE_ID, NombreCompleto = origen.NOMBRE + " " + origen.APELLIDO, // 补充其他属性映射 }; } }更换兼容.NET Framework的映射库
选用支持.NET Framework的成熟映射库,比如AutoMapper,配置和使用示例:// 全局配置映射关系 var mapperConfig = new MapperConfiguration(cfg => { cfg.CreateMap<CLIENTES, DatosCliente>(); }); // 创建映射实例并使用 var mapper = mapperConfig.CreateMapper(); DatosCliente target = mapper.Map<DatosCliente>(origen);
内容的提问来源于stack exchange,提问作者davidrgh
相关产品推荐
相关产品推荐

