在使用中放置一个类名=命名空间

时间:2016-08-04 17:49:06

标签: c# visual-studio c#-4.0 using using-directives

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

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

using MyProject.WinService.Tasks.Core;

是否可能选择接触该位置,因为" Core"还有很多其他课程吗?

3 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

我们遇到的一个案例是我们在同一个类中引用的两个名称空间中定义了一个类名。所以我们必须使用完全限定名称,因此代码结果是:

sudo start servicelocator

哪个非常不清楚。所以我们用

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


}

然后方法变为:

using SomeIdentifier = CompanyName.ProjectName.FeatureName;

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

假设您需要引用一个定义名为' Task'的类型的库。如果您需要在引用public SomeIdentifier.ClassName SomeMethod(object param1, object param2, object param3) { } 的分类中使用它。您需要使用完全限定名称System.Threading.Tasks或定义别名。