如何解决 C# 中的重复命名空间

发布于 2024-12-03 08:06:43 字数 159 浏览 1 评论 0原文

我有 2 个程序集 Combres 和 log4net

两个程序集都包含相同的 log4net.Appender 命名空间(包括内部代码) - 我需要继承 log4net.Appender.AdoNetAppender

我该如何实现这个目标。

I have 2 assemblies Combres and log4net

Both assemblies contain the same log4net.Appender namespace (internal code included) - I need to inherit log4net.Appender.AdoNetAppender.

How do I accomplish this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

指尖上的星空 2024-12-10 08:06:43

您可以为其中一个命名空间指定一个别名,如下所示:

using MyNameSpace = log4net.Appender;

然后继承 MyNameSpace.AdoNetAppender

You can probably specify an alias for one of the namespaces, like this:

using MyNameSpace = log4net.Appender;

Then inherit MyNameSpace.AdoNetAppender

春花秋月 2024-12-10 08:06:43

完全限定类型。例如,如果您尝试从此类继承:

class MyAppender : log4net.Appender.AdoNetAppender

如果您尝试使用/创建此类的实例:

var appender = log4net.Appender.AdoNetAppender;

如果 Combreslog4net 都包含类型 AdoNetAppenderlog4net.Appender 命名空间中,那么你就会遇到更多麻烦(有人犯了一个错误 - 命名空间旨在避免此类冲突)。

如果确实发生这种情况,则您可以使用程序集引用“别名”属性来解决冲突,如 程序集引用的 Aliases 属性有什么用

Fully qualify the type. For example if you are trying to inherit from this class:

class MyAppender : log4net.Appender.AdoNetAppender

If you are trying to use / create an instance of this class:

var appender = log4net.Appender.AdoNetAppender;

If Combres and log4net both contain a type AdoNetAppender in the log4net.Appender namespace then you are in more trouble (and someone made a mistake - namespaces are designed to avoid these sorts of conflicts).

If this does happen then you can use the assembly reference "Aliases" property to resolve the conflict as described in What use is the Aliases property of assembly references.

秋风の叶未落 2024-12-10 08:06:43

查看外部别名的文档。它允许您在代码中显式引用类,即使它们位于相同的命名空间中并且具有相同的名称。

例如,您可以像这样引用 log4net 类:

extern alias l4n;

//... further down

l4n::log4net.Appender.AdoNetAppender l4nAppender = null;

“l4n”别名还必须添加到 Visual Studio 中 DLL 引用的属性页中。

Take a look at the documentation for extern alias. It allows you to explicitly reference classes in your code even if they are in the same namespace and have the same name.

You might, for example, reference the log4net classes like so:

extern alias l4n;

//... further down

l4n::log4net.Appender.AdoNetAppender l4nAppender = null;

The "l4n" alias also has to be added to the property page for the DLL reference in Visual Studio.

半世晨晓 2024-12-10 08:06:43

我非常确定 Combres 本身不使用 log4net.Appender 命名空间,而是使用 Combres.Loggers 命名空间。

Combres (2.2.1) 包含对log4net 的引用。如果您的应用程序也包含对 log4net 的引用(甚至可能位于 Combres 引用的 log4net 程序集之外的其他位置),则可能会导致您所描述的错误。

引用了多个 log4net-assemblies,当然这些都包含 log4net.Appender

I'm quite sure that Combres itself does not use the log4net.Appender namespace but Combres.Loggers namespace.

But Combres (2.2.1) contains a reference to log4net. If your application contains a reference to log4net as well (possibly even in another location than the log4net assembly that is referenced by Combres), this could result in the error you described.

(Multiple log4net-assemblies are referenced and of course these all contain the log4net.Appender)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文