【发布时间】:2017-09-13 10:54:56
【问题描述】:
在 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 来公开一个被认为有效的命名空间。
相关问题
讨论 C# 中的 using 与 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
关于在命名空间中包含类的问题。问题是使用单独的项目,因此不适用于此问题:
【问题讨论】:
-
我最初建议你使用类型转发,但是在运行了一个小测试模型之后,这对你不起作用,因为一个要求是命名空间保持不变,这是你不能拥有的。看起来您最好的选择是创建 shell 类,将请求转发到另一个程序集中的真实类。
标签: c# dll namespaces