在 using 中放置一个 class name = namespace

Putting a class name = namespace, in using

using BusinessTask =  MyProject.WinService.Tasks.Core.BusinessTask;

我从上面了解到BusinessTask class现在可以使用了,但是我想知道可能是什么原因作者没有直接说:

using MyProject.WinService.Tasks.Core;

由于 "Core" 还有许多其他 class,是否可能对该位置的曝光有选择性?

BusinessTask 可能存在于多个命名空间中。为了避免在每个 BusinessTask 用法附近指定完整的命名空间路径,您可以明确地说:

using BusinessTask =  MyProject.WinService.Tasks.Core.BusinessTask;

并且编译器会知道,当您使用 BusinessTask 时,它应该从 MyProject.WinService.Tasks.Core 命名空间中获取它。

这是一个很好的例子How to handle same class name in different namespaces?

您可以使用 class 名称别名以避免在另一个导入的同名命名空间中存在 class 时发生名称冲突。即使您简单地将别名命名为与目标 class 相同的名称,它也会告诉编译器每次您在该范围内使用 class 名称时,您指的是您已经别名化的名称.

在此处查看此答案:https://softwareengineering.stackexchange.com/a/170839/144365

我们遇到的一种情况是,我们在两个命名空间中定义了一个 class 名称,我们在同一个 class 中引用它们。所以我们不得不使用 Fully Qualified name,所以代码变成了:

public CompanyName.ProjectName.FeatureName.ClassName SomeMethod(object param1, 
                                                              object param2, object param3)
{


}

这很不清楚。所以我们将其替换为

using SomeIdentifier = CompanyName.ProjectName.FeatureName;

那么方法就变成了:

public SomeIdentifier.ClassName SomeMethod(object param1, object param2, object param3)
{


}

在此 class 中使用该类型 10 次,在 using 中使用该别名使代码更具可读性。

假设在您的情况下您需要引用定义名为 'Task' 的类型的库。如果您需要在 classing 引用 System.Threading.Tasks 中使用它。您需要使用完全限定名称 System.Threading.Tasks task = .... 或定义别名。