Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在c中解析重复的NAMC空间#_C#_.net_Namespaces - Fatal编程技术网

C# 如何在c中解析重复的NAMC空间#

C# 如何在c中解析重复的NAMC空间#,c#,.net,namespaces,C#,.net,Namespaces,我有两个程序集Combres和log4net 两个程序集都包含相同的log4net.Appender命名空间(包括内部代码)-我需要继承log4net.Appender.AdoNetAppender 如何完成此操作。您可能可以为其中一个名称空间指定别名,如下所示: using MyNameSpace = log4net.Appender; 然后继承MyNameSpace.AdoNetAppender您可能可以为其中一个名称空间指定别名,如下所示: using MyNameSpace = log

我有两个程序集
Combres
log4net

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


如何完成此操作。

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

using MyNameSpace = log4net.Appender;

然后继承MyNameSpace.AdoNetAppender

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

using MyNameSpace = log4net.Appender;

然后继承MyNameSpace.AdoNetAppender

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

class MyAppender : log4net.Appender.AdoNetAppender
var appender = log4net.Appender.AdoNetAppender;
如果您试图使用/创建此类的实例:

class MyAppender : log4net.Appender.AdoNetAppender
var appender = log4net.Appender.AdoNetAppender;
如果
Combres
log4net
log4net.Appender
名称空间中都包含类型
AdoNetAppender
,则您会遇到更大的麻烦(而且有人犯了错误-名称空间的设计是为了避免此类冲突)


如果发生这种情况,则可以使用程序集引用“别名”属性来解决冲突,如中所述。

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

class MyAppender : log4net.Appender.AdoNetAppender
var appender = log4net.Appender.AdoNetAppender;
如果您试图使用/创建此类的实例:

class MyAppender : log4net.Appender.AdoNetAppender
var appender = log4net.Appender.AdoNetAppender;
如果
Combres
log4net
log4net.Appender
名称空间中都包含类型
AdoNetAppender
,则您会遇到更大的麻烦(而且有人犯了错误-名称空间的设计是为了避免此类冲突)


如果确实发生这种情况,则可以使用程序集引用“别名”属性来解决冲突,如中所述。

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

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

extern alias l4n;

//... further down

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

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

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

例如,您可以这样引用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

我很确定Combres本身并没有使用
log4net.Appender
名称空间,而是使用
Combres.Loggers
名称空间

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


(引用了多个log4net程序集,当然它们都包含
log4net.Appender

使用log4net.Appender.AdoNetAppender
没有为您找到合适的吗?@Marco:
AdoNetAppender
是一个类。您通过继承log4net.Appender.AdoNetAppender来回答您的问题。不,它不知道使用哪一个,因为名称空间是重复的。我非常确定Combres没有使用
log4net.Appender
名称空间,而是
Combres.Loggers
名称空间。。。。可能错误的根本原因是使用log4net.Appender.AdoNetAppender的其他地方
没有为您找到合适的吗?@Marco:
AdoNetAppender
是一个类。您通过继承log4net.Appender.AdoNetAppender来回答您的问题。不,它不知道使用哪一个,因为名称空间是重复的。我非常确定Combres没有使用
log4net.Appender
名称空间,而是
Combres.Loggers
名称空间。。。。可能错误的根本原因是其他一些答案完全是HG(更高等级)或一些答案完全是HG(更高等级)