有2个组件Combres
和log4net
我如何解决重复namspaces在C#
两个组件包含相同的log4net.Appender
命名空间(包括内部代码) - 我需要继承log4net.Appender.AdoNetAppender
。
我该如何做到这一点。
有2个组件Combres
和log4net
我如何解决重复namspaces在C#
两个组件包含相同的log4net.Appender
命名空间(包括内部代码) - 我需要继承log4net.Appender.AdoNetAppender
。
我该如何做到这一点。
完全限定的类型。例如,如果你正试图从这个类继承:
class MyAppender : log4net.Appender.AdoNetAppender
如果您尝试使用/创建这个类的一个实例:
var appender = log4net.Appender.AdoNetAppender;
如果Combres
和log4net
都包含在类型AdoNetAppender
命名空间,那么你遇到了更多麻烦(并且有人犯了一个错误 - 命名空间旨在避免这类冲突)。
如果发生这种情况,您可以使用程序集引用“别名”属性来解决冲突,如What use is the Aliases property of assembly references中所述。
awsome答案完全HG(高年级) – David
你或许可以指定一个别名命名空间之一,是这样的:
using MyNameSpace = log4net.Appender;
然后继承MyNameSpace.AdoNetAppender
查看extern alias的文档。它允许您在代码中显式引用类,即使它们在相同的名称空间中并且名称相同。
你可能,例如,对像这样log4net的类:
extern alias l4n;
//... further down
l4n::log4net.Appender.AdoNetAppender l4nAppender = null;
的“L4N”的别名也必须加入的属性页在Visual Studio中的DLL参考。
我很确定Combres本身不使用log4net.Appender
命名空间,但使用Combres.Loggers
命名空间。
但是Combres
(2.2.1)包含对log4net
的引用。如果您的应用程序也包含对log4net
的引用(甚至可能位于Combres引用的log4net程序集以外的其他位置),则可能会导致您描述的错误。
(多log4net的组件被引用,当然这些都含有log4net.Appender
)
'使用log4net.Appender.AdoNetAppender;'没有得到适合你的? – Marco
@Marco:'AdoNetAppender'是一个类。 –
您通过继承log4net.Appender.AdoNetAppender回答了您的问题。 – saber