.NET6 Blazor WASM PWA无Startup类时AutoMapper配置失败如何解决
Blazor WASM 项目 AutoMapper 配置方案
核心原理
AddAutoMapper 方法传入的类型参数仅用于定位需要扫描映射配置的程序集,并不强制要求必须是Startup类,只要传入任意一个和你的映射配置处于同一程序集的有效类型即可。
注意:请确保项目已安装
AutoMapper.Extensions.Microsoft.DependencyInjectionNuGet包,版本需和你的.NET版本兼容。
解决方法
方案1:直接替换类型参数
直接将原来的typeof(Startup)替换为当前项目的Program类类型即可,Blazor WASM 项目的入口类默认是Program:
// Blazor WASM Program.cs 中的配置代码 builder.Services.AddAutoMapper(typeof(Program));
如果你使用的是带顶层语句的Program.cs,无需额外定义Program类,编译器会自动生成该类,直接使用typeof(Program)即可生效。
方案2:指定Profile类(更推荐)
推荐单独定义继承自Profile的配置类统一管理映射规则,配置时直接传入Profile类的类型,扫描范围更精准:
- 先定义映射配置类
public class MappingProfile : Profile { public MappingProfile() { // 这里写你的映射规则,示例: CreateMap<SourceModel, TargetModel>(); } }
- 注册时传入该Profile的类型
builder.Services.AddAutoMapper(typeof(MappingProfile));
多程序集场景处理
如果你的映射配置存放在单独的类库项目中,只需传入类库项目中任意一个对应类型(比如类库中定义的Profile类)即可,AutoMapper会自动扫描该程序集下的所有映射配置。
内容的提问来源于stack exchange,提问作者Ivan Rakitin
相关产品推荐
相关产品推荐

