当存在同名的子命名空间时,如何在 c# 中引用完整的命名空间? [复制]
Posted
技术标签:
【中文标题】当存在同名的子命名空间时,如何在 c# 中引用完整的命名空间? [复制]【英文标题】:How can I reference a full namespace in c# when a subnamespace exists with the same name? [duplicate] 【发布时间】:2022-01-23 20:03:25 【问题描述】: 我在命名空间 My.Code.Microsoft 命名空间中有一个代码。 我添加了使用 Microsoft.Graph 命名空间的 Microsoft.Graph nuget 包 我在 My.Code 命名空间中有其他代码。当我尝试在此处使用例如“Microsoft.Graph.User”时,它会尝试查找 My.Code.Microsoft.Graph.User 如何强制它使用 Microsoft.Graph.User ?它似乎试图在当前命名空间的子命名空间中找到它,但我想强制它找到根命名空间 Microsoft.Graph谢谢
大卫
【问题讨论】:
在顶部添加“使用 Microsoft.Graph.User”不起作用吗? 【参考方案1】:如果没有更多细节,甚至是代码快照,很难真正回答。如果您能提供您正在使用的 C#/.NET 版本(例如 C# 10 和 .NET 6)以及代码,那将会有所帮助。
当我调用存在于多个命名空间中的类时,我设置了一个 using 语句来指定命名空间。但是还有另一种方法可以做到这一点。下面,我详细介绍了两种流行的方法。
例如,我有一个项目,我在其中使用一个 SDK,该 SDK 有一个与 Microsoft.Extension 命名空间中的类同名的类所以,我在 using 语句中添加了以下行。
using Configuration = Connectwise.Client.Configuration
这段代码告诉该文件,无论我在哪里使用配置对象,我都将它用于该命名空间。
现在,如果您不想为整个文件指定该对象的命名空间怎么办?您可以通过调用指定它。考虑以下几点:
public Configuration Config get;
如果没有 using 语句,代码不知道要分配哪个配置类作为属性的类型。如果我还需要调用其他命名空间的Configuration类,那么我可以这样做:
public Connectwise.Client.Configuration Config get;
这种方法的失败?您必须在每次调用时编写名称空间。这会让人厌烦并且很容易变得难以阅读。如果你只调用两个类(它们共享相同的名称但存在于不同的命名空间中),我会为你引用最多的一个设置 using 语句,并为你调用最少的一个指定命名空间。
【讨论】:
以上是关于当存在同名的子命名空间时,如何在 c# 中引用完整的命名空间? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
C# ASP.NET ASP.NET#命名空间"System.Data"中不存在类型或命名空间名称"Linq"(是否缺少程序集引用?)