访问两个不同程序集中存在的类时出错

时间:2017-05-04 12:04:01

标签: c#

我有一个项目,其中包含两个不同的dll。 当我创建该类的对象时,它会显示错误

  

严重级代码描述项目文件行抑制状态   错误CS0433类型' clsRMQNew'存在于两者中   ' XXXX.abc.System,Version = 11.0.0.3,Culture = neutral,   公钥=空'和' YYYY.Common.Queue,   版本= 16.12.26.1,文化=中立,

请指导我如何从一个程序集中访问该类。 有没有相同的解决方案?

3 个答案:

答案 0 :(得分:1)

编译器抱怨你,因为你已经以这种方式声明某个变量

clsRMQNew rmq = new clsRMQNew();

但是编译器不可能知道应该使用哪个程序集来创建变量,因为有两个具有相同名称的程序集,并且您没有提供任何关于要使用哪个程序集的提示。
因此,它会使用提到的错误

停止编译

您可以修复此问题,添加类的整个限定名称

XXXX.abc.System.clsRMQNew rmq = new XXXX.abc.System.clsRMQNew();

YYYY.Common.Queue.clsRMQNew rmq = new YYYY.Common.Queue.clsRMQNew();

取决于您要使用的课程。

您还可以缩短这些声明,将其添加到您的using指令

using QueueA = YYYY.Common.Queue;

然后

QueueA.clsRMQNew rmq = new QueueA.clsRMQNew();

答案 1 :(得分:1)

您需要在类(完全限定)前添加您打算使用的特定命名空间以避免冲突。

using NameSpaceOne;
using NameSpaceTwo;

namespace StackOverflow
{
    class Program
    {
        static void Main(string[] args)
        {

            var dupObjectOne = new NameSpaceOne.DuplicateClass() { value = 1};
            var dupObjectTwo = new NameSpaceOne.DuplicateClass() { value = 2 };
        }
    }
}

namespace NameSpaceOne
{
    class DuplicateClass
    {
        public int value { get; set; }
    }
}

namespace NameSpaceTwo
{
    class DuplicateClass
    {
        public int value { get; set; }
    }
}

答案 2 :(得分:0)

您需要提供班级的全名:

var one = new XXXX.abc.System.clsRMQNew();
var two = new YYYY.Common.Queue.clsRMQNew();