我有一個項目引用了兩個不同的dll。 當我創建一個類,它說下面錯誤的對象訪問存在於兩個不同程序集中的類時出錯
嚴重性代碼說明項目文件的線路抑制狀態 錯誤CS0433類型「clsRMQNew」兩個 「XXXX.abc.System存在,版本= 11.0 .0.3,文化=中立, 公鑰=空「和」 YYYY.Common.Queue, 版本= 16.12.26.1,文化=中立,
請指導我如何訪問該類從任一部件。 有沒有相同的解決方案?
我有一個項目引用了兩個不同的dll。 當我創建一個類,它說下面錯誤的對象訪問存在於兩個不同程序集中的類時出錯
嚴重性代碼說明項目文件的線路抑制狀態 錯誤CS0433類型「clsRMQNew」兩個 「XXXX.abc.System存在,版本= 11.0 .0.3,文化=中立, 公鑰=空「和」 YYYY.Common.Queue, 版本= 16.12.26.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 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; }
}
}
喜先生,我已經試過你在給定片斷建議但仍試圖類的完全合格的名稱前綴的可變我得到同樣的錯誤。我需要刪除一些文件嗎? –
你應該用你想用 – Steve
我已經使用該名稱的命名空間即 –