正在使用中放入类名=命名空间

本文关键字:命名空间 | 更新日期: 2023-09-27 18:00:10

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

我从上面的BusinessTask类中了解到,现在可以使用它了,但我想知道作者没有给出的原因是什么:

using MyProject.WinService.Tasks.Core;

由于"核心"还有许多其他类别,这可能是为了选择性地暴露该位置吗?

正在使用中放入类名=命名空间

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

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

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

下面是一个很好的例子。如何在不同的命名空间中处理相同的类名?

当另一个导入的命名空间中有一个类具有相同名称时,可以使用类名别名来避免名称冲突。即使你只是简单地将别名称为与目标类相同的名称,它也会告诉编译器,每次你在该范围内使用类名时,你都是在引用你别名过的那个。

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

我们面临的一种情况是,我们在同一类中引用的两个名称空间中定义了类名。所以我们不得不使用完全限定的名称,所以代码变成了:

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)
{

}

在这个类中使用了10次该类型,在使用中使用该别名使代码更具可读性。

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