C# 避免更多命名空间的命名空间技巧

C# 避免更多命名空间的命名空间技巧,c#,.net,asp.net-core,swagger,C#,.net,Asp.net Core,Swagger,我正在ASP.NET核心MVC应用程序中编写一些测试代码。在默认的Startup.cs中,它使用MVC,如下所示: public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { app.UseMvc(routes => { /* ... */ }); } 查看我们可以看到的。UseMvc是iaapplicationbuilder的一种扩

我正在ASP.NET核心MVC应用程序中编写一些测试代码。在默认的
Startup.cs
中,它使用MVC,如下所示:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    app.UseMvc(routes => { /* ... */ });
}
查看我们可以看到的
。UseMvc
iaapplicationbuilder
的一种扩展方法

现在我想为这个项目添加支持。现在有一个,我添加了参考,现在我可以使用:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    app.UseMvc(routes => { /* ... */ });
    app.UseSwagger(...);
}
但是等等!在使用
之前,我没有使用
语句添加任何
。使用swagger
!然后我发现了一件棘手的事情:在引用的swagger库中,他们有一个名为
Microsoft.AspNetCore.Builder
的名称空间,它是
iaapplicationbuilder
所属的(在另一个库中),所以这个名称空间在
Startup.cs
中绝对“使用”


我承认这是一种聪明的方法,用户不会浪费时间寻找扩展方法的名称空间(即使现在VS2015可以检测扩展方法的名称空间,但可以想象其他IDE,例如VS代码)。但是在
CompanyA.ProjectA.XXX.dll
中添加一个完全不相关的名称空间
CompanyB.ProjectB.XXX
会有风险吗?

投票结果接近,但没有解释原因的评论?真的吗?@GoodNightNerdPride,我想可能主要是基于观点。为什么会有问题呢?如果你为一个特定的名称空间构建了一个全局扩展,那么把它放在同一个名称空间中,你就可以看到更多关于潜在扩展的信息conflicts@SirRufo-直到两个独立的项目给它们的扩展方法起了相同的名字,而这一切都会分崩离析,迫使这些项目的消费者(如果两者都使用)必须使用别名并停止使用扩展方法。