【问题标题】:How to avoid having to write namespace before class C#如何避免在 C# 类之前编写命名空间
【发布时间】:2020-08-18 15:04:38
【问题描述】:

所以我制作了一个 .dll 并将其添加到我的项目中,一切正常,但是当我尝试使用我的 .dll 中的任何类时。我必须专门使用 namespace.classname 而不是只能说 Classname 即使我放在项目的顶部

使用命名空间

using System;
using MyTestClassLibrary;
using System.IO;
using YangHandler;

namespace UsingMyclassdll
{
    class Program
    {
        static void Main(string[] args)
        {
            YangHandler.YangHandler yangh = YangHandler.YangHandler.Parse("Rawtext");

            Console.ReadKey();
        }
    }
}

在使用Yanghandler visual studio的线上说

不需要使用指令

这不正是 using 用来使用其他命名空间的吗?

YangHandler 代码

using System;
using System.IO;

namespace YangHandler
{
    public class YangHandler
    {
        public string YangAsRawText { get; private set; }

        public static YangHandler Parse(string YangAsRawText)
        {
            YangHandler handlerToReturn = new YangHandler();

            handlerToReturn.YangAsRawText = YangAsRawText;

            return handlerToReturn;
        }

我知道可以通过使用命名空间“UsingMyclassdll”下的命名空间别名来解决,比如

使用 YangHandler = YangHandler.YangHandler;

但是没有更正常的解决方案吗?

【问题讨论】:

  • 使用命名空间名 = 类名是不好的做法。
  • 删除 using YangHandler; 或 YangHandler.?或者更改YangHandler 类或YangHandler 命名空间的名称。
  • 你为什么要这样做?正常的解决方案是使用命名空间...
  • 没有与您的类同名的命名空间。然后你可以利用using 结构。

标签: c# using


【解决方案1】:

查看来自 Microsoft 的非常有趣的文档:https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/names-of-namespaces

不要对命名空间和该命名空间中的类型使用相同的名称。

例如,不要使用 Debug 作为命名空间名称,然后在同一命名空间中提供一个名为 Debug 的类。一些编译器要求这些类型是完全限定的。

因此,您的工作基本上是定义完全限定名称,因为类型和命名空间具有相同的名称。

没有解决这个问题。编译器不知道你是指一个还是另一个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 2019-08-08
    • 2013-03-17
    • 1970-01-01
    相关资源
    最近更新 更多