gpt4 book ai didi

C# 创建包装命名空间?

转载 作者:行者123 更新时间:2023-12-04 16:57:19 25 4
gpt4 key购买 nike

在 C# 中,如何将所有类从一个命名空间导入另一个命名空间,以便可以从第二个命名空间直接访问这些类?

我本质上是在尝试以外部可见的方式重命名命名空间。

由于代码值一千字,给定一个具有以下命名空间的 DLL:

// Externally written DLL I have no control over.

namespace A
{
class ClassA {...}
}

我希望能够按照以下方式创建另一个 DLL:

// My DLL

namespace Wrapper
{
using A;
}

这样我就可以像这样使用它:

// Final C# program.

using Wrapper;

var a = ClassA();

在python中,我可以用 import *完成我想要的:

# external.py
class ClassA:
...

# mymodule.py
from external import *

# final_program.py
import mymodule
a = mymodule.ClassA()

免责声明

我知道这是一个糟糕的主意,但不幸的是我受到外部要求的限制。简短的版本是我有一个外部 DLL,它需要与专有系统(EnScript,如果你好奇的话)连接。这个专有系统对外部 DLL 当然违反的命名空间命名有限制。因此,我试图使用包装器 DLL 来公开一个被认为有效的命名空间。

相关问题

using在 C# 中与 java/python 中的通配符导入。不解决从第二个命名空间访问的问题:
  • Import all subclasses like Java but in C#
  • C# equivalent to wildcard imports in Java
  • Namespaces in C# vs imports in Java and Python

  • 关于在命名空间中包含类的问题。问题是使用单独的项目,因此不适用于这个问题:
  • How To Include Classes From Another Namespace In Assembly Instead of Writing Them Into A Separate DLL File?
  • 最佳答案

    您不能将类型移动到不同的命名空间(除了物理移动代码)。 .NET 类型系统使用完整的命名空间来唯一标识类型。

    但是您可以创建一个别名来屏蔽原始命名空间。

    假设您有一个类(class) MyProject.Foo.Bar.Xyzzy.MyClass ,你已经厌倦了打字 MyProject.Foo.bar.Xyzzy .您可以添加 Using代码文件顶部的指令,如下所示:

    Using DifferentNamespace = MyProject.Foo.Bar.Xyzzy;

    完成此操作后,您可以使用以下命令引用该类
    var c = new DifferentNamespace.MyClass();

    您甚至可以使用它在当前默认命名空间中包含不同的命名空间。这将编译:
    namespace Example.Classes
    {
    class MyClass
    {
    }
    }

    namespace Example
    {
    using Example = Example.Classes;
    class Test
    {
    static void Test1()
    {
    var c = new Example.MyClass(); //Not Example.Classes.MyClass
    }
    }
    }

    但不幸的是,您必须将别名留在那里;即,这不会编译:
    namespace Example.Classes
    {
    class MyClass
    {
    }
    }

    namespace Example
    {
    using Example = Example.Classes;
    class Test
    {
    static void Test1()
    {
    var c = new MyClass(); //Error
    }
    }
    }

    关于C# 创建包装命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43457978/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com