Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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#_.net_Namespaces - Fatal编程技术网

C# 关于外部库和名称空间的问题

C# 关于外部库和名称空间的问题,c#,.net,namespaces,C#,.net,Namespaces,在我正在构建的类库中,我包含了来自的文件。我的问题是:我是否应该将名称空间包装在HtmlAgilityPack类周围?例如: namespace HtmlAgilityPack { internal... // blah blah blah } 变成: namespace MyNamespace { namespace HtmlAgilityPack { internal... // blah blah blah } } 我正在考虑这样做,以防止在

在我正在构建的类库中,我包含了来自的文件。我的问题是:我是否应该将名称空间包装在HtmlAgilityPack类周围?例如:

namespace HtmlAgilityPack {
    internal... // blah blah blah

}
变成:

namespace MyNamespace {
    namespace HtmlAgilityPack {
        internal... // blah blah blah

    }
}

我正在考虑这样做,以防止在已经使用HtmlAgilityPack的项目中发生冲突。还有其他理由这样做吗?谢谢,

不,我想你不必为此担心。对于已经使用HtmlAgilityPack的项目,您只需与他们共享HtmlAgilityPack名称空间即可。我看不出这里有冲突的问题。

用户应该能够使用名称空间唯一地标识类名,这就是名称空间的全部概念。有一些解决方法,如别名,但我不会为您库的用户介绍这个问题。在这种情况下,我将按照您的建议包装
HtmlAgility
名称空间。

而不是执行以下操作:

namespace MyNamespace {
    namespace HtmlAgilityPack {
        internal... // blah blah blah

    }
}


这是一种常见的方法,是的,这样做很好,因为名称空间是活动的。

如果我的HtmlAgilityPack淡化版本将类添加到HAP完整版本(在项目中)已经创建的名称空间中,编译器是否会抱怨?(即:clobbering)我明白了,您想实际包含来自HtmlAgilityPack的文件吗?在这种情况下,是的,我认为您需要将其包装在自己的名称空间中。我正在考虑包含HAP dll文件,但我宁愿将依赖项嵌入到我的库中。否则,用户需要包含两个dll文件才能使用一个库。不确定许可证是如何工作的,但我认为您可以通过这种方式“复制和粘贴”存在一些限制。包括两个dll文件不会是什么大问题,在.Net世界中,很少有库不具有任何依赖性,除非您有特定的原因,否则我不会担心。许可证上说我可以制作衍生作品,所以我应该可以:)。我将把它作为一个文件保存,这样我的用户(可能是我和我自己)就不必担心依赖性。
namespace MyNamespace.HtmlAgilityPack 
{
        internal... // blah blah blah
}