C# 访问存在于两个不同程序集中的类时出错
我有一个项目,其中有两个不同的DLL的参考。 当我创建该类的对象时,它会在下面显示错误 严重性代码说明项目文件行抑制状态 错误CS0433类型“clsRMQNew”在这两个数据库中都存在 'XXXX.abc.System,版本=11.0.0.3,区域性=中性, PublicKeyToken=null'和'YYYY.Common.Queue, 版本=16.12.26.1,区域性=中性 请指导我如何从一个程序集访问该类。C# 访问存在于两个不同程序集中的类时出错,c#,C#,我有一个项目,其中有两个不同的DLL的参考。 当我创建该类的对象时,它会在下面显示错误 严重性代码说明项目文件行抑制状态 错误CS0433类型“clsRMQNew”在这两个数据库中都存在 'XXXX.abc.System,版本=11.0.0.3,区域性=中性, PublicKeyToken=null'和'YYYY.Common.Queue, 版本=16.12.26.1,区域性=中性 请指导我如何从一个程序集访问该类。 有没有同样的解决方案?编译器会向您抱怨,因为您以这种方式在某个地方声明了一个变
有没有同样的解决方案?编译器会向您抱怨,因为您以这种方式在某个地方声明了一个变量
clsRMQNew rmq = new clsRMQNew();
但是对于编译器来说,不可能知道应该使用哪个程序集来创建变量,因为有两个程序集具有相同的名称,而您没有给出使用哪个程序集的任何提示。因此,它停止编译,并出现上述错误 添加类的整个限定名可以解决此问题
XXXX.abc.System.clsRMQNew rmq = new XXXX.abc.System.clsRMQNew();
或
取决于要使用的类
您还可以缩短这些声明,将其添加到using指令中
using QueueA = YYYY.Common.Queue;
然后
QueueA.clsRMQNew rmq = new QueueA.clsRMQNew();
您需要提供类的全名:
var one = new XXXX.abc.System.clsRMQNew();
var two = new YYYY.Common.Queue.clsRMQNew();
您需要在类(完全限定)的前面加上您打算用来避免冲突的特定名称空间
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; }
}
}
你应该在你的变量前面加上你想要使用的类的全名。我已经尝试过使用名称空间i.eHi先生,我已经尝试过你在给定代码段中建议的方法,但是仍然得到了相同的错误。我需要删除一些文件吗??
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; }
}
}