2011-09-06 30 views
1

有2个组件Combreslog4net我如何解决重复namspaces在C#

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

我该如何做到这一点。

+0

'使用log4net.Appender.AdoNetAppender;'没有得到适合你的? – Marco

+0

@Marco:'AdoNetAppender'是一个类。 –

+1

您通过继承log4net.Appender.AdoNetAppender回答了您的问题。 – saber

回答

6

完全限定的类型。例如,如果你正试图从这个类继承:

class MyAppender : log4net.Appender.AdoNetAppender 

如果您尝试使用/创建这个类的一个实例:

var appender = log4net.Appender.AdoNetAppender; 

如果Combreslog4net都包含在类型AdoNetAppender命名空间,那么你遇到了更多麻烦(并且有人犯了一个错误 - 命名空间旨在避免这类冲突)。

如果发生这种情况,您可以使用程序集引用“别名”属性来解决冲突,如What use is the Aliases property of assembly references中所述。

+0

awsome答案完全HG(高年级) – David

7

你或许可以指定一个别名命名空间之一,是这样的:

using MyNameSpace = log4net.Appender; 

然后继承MyNameSpace.AdoNetAppender

2

查看extern alias的文档。它允许您在代码中显式引用类,即使它们在相同的名称空间中并且名称相同。

你可能,例如,对像这样log4net的类:

extern alias l4n; 

//... further down 

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

的“L4N”的别名也必须加入的属性页在Visual Studio中的DLL参考。

0

我很确定Combres本身不使用log4net.Appender命名空间,但使用Combres.Loggers命名空间。

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

多log4net的组件被引用,当然这些都含有log4net.Appender

相关问题