.NET中IServiceCollection扩展方法AddApplication无法找到的问题
.NET扩展方法AddApplication找不到的解决办法
问题重现
我尝试在.NET中通过扩展方法实现依赖注入,编写了以下代码:
src/Application/DependencyInjection.cs
using FluentValidation; using Microsoft.Extensions.DependencyInjection; namespace Application; public static class DependencyInjection { public static IServiceCollection AddApplication(this IServiceCollection services) { var assembly = typeof(DependencyInjection).Assembly; services.AddMediatR(configuration => configuration.RegisterServicesFromAssembly(assembly) ); services.AddValidatorsFromAssembly(assembly); return services; } }
在WebApi项目的Program.cs中调用该扩展方法时:
builder.Services.AddApplication(); // 触发错误
收到错误提示:
'IServiceCollection' 不包含 'AddApplication' 的定义,也找不到可接受类型为 'IServiceCollection' 的第一个参数的可访问扩展方法 'AddApplication'。
解决方法
- 添加项目引用:确保WebApi项目已引用Application项目。右键WebApi项目 → 选择「项目引用」→ 勾选Application项目。
- 引入命名空间:在WebApi的Program.cs顶部添加命名空间引用:
using Application;,扩展方法所在的命名空间必须显式引入才能被识别。 - 验证访问权限:确认
DependencyInjection类和AddApplication方法均为public修饰(你的代码已满足,但如果误改为internal会导致无法访问)。 - 清理重建项目:若上述操作后仍报错,尝试清理解决方案并重新生成所有项目,清除VS的编译缓存。
内容的提问来源于stack exchange,提问作者Tania
相关产品推荐
相关产品推荐

