İngilizce dilinde oku

Aracılığıyla paylaş


Derleyici Uyarısı (düzey 1) CS1684

'Tür Adı' türüne başvuru, 'Ad Alanı' içinde tanımlandığını iddia eder, ancak bulunamadı

Bu hata, bir ad alanının içindeki bir başvurunun, ikinci bir ad alanı içinde var olduğunu söylediği bir türe başvurması, ancak türün mevcut olmamasından kaynaklanabilir. Örneğin, mydll.dll türün A yourdll.dll içinde var olduğunu, ancak yourdll.dll içinde böyle bir tür olmadığını söyler. Bu hatanın olası nedenlerinden biri, kullandığınız yourdll.dll sürümünün çok eski olması ve A henüz tanımlanmamış olmasıdır.

Aşağıdaki örnek CS1684 oluşturur.

Örnek 1

// CS1684_a.cs  
// compile with: /target:library /keyfile:CS1684.key  
public class A {  
   public void Test() {}  
}  
  
public class C2 {}  

Örnek 2

// CS1684_b.cs  
// compile with: /target:library /r:cs1684_a.dll  
// post-build command: del /f CS1684_a.dll  
using System;  
public class Ref
{  
   public static A GetA() { return new A(); }  
   public static C2 GetC() { return new C2(); }  
}  

Örnek 3

Şimdi ilk derlemeyi yeniden derleyeceğiz ve C2 sınıfının tanımı yeniden derlemede tanımlanmamalıdır.

// CS1684_c.cs  
// compile with: /target:library /keyfile:CS1684.key /out:CS1684_a.dll  
public class A {  
   public void Test() {}  
}  

Örnek 4

Bu modül, tanımlayıcısı Refile ikinci modüle başvurur. Ancak ikinci modül, önceki adımda derleme nedeniyle artık var olmayan sınıfına C2bir başvuru içerir ve bu nedenle cs1684 hata iletisi bu modülün derlemesinden döndürülür.

// CS1684_d.cs  
// compile with: /reference:cs1684_a.dll /reference:cs1684_b.dll  
// CS1684 expected  
class Tester  
{  
   public static void Main()  
   {  
      Ref.GetA().Test();  
   }  
}