正在使用中放入类名=命名空间
本文关键字:命名空间 | 更新日期: 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 = ....
或定义别名。