Upozornění kompilátoru (úroveň 1) CS1684

Odkaz na typ "Název typu" deklarací identity je definován v oboru názvů, ale nelze jej najít.

Příčinou této chyby může být odkaz uvnitř jednoho oboru názvů odkazující na typ, který říká, že existuje uvnitř druhého oboru názvů, ale typ neexistuje. Například mydll.dll říká, že typ A existuje uvnitř yourdll.dll, ale v yourdll.dll neexistuje žádný takový typ. Jednou z možných příčin této chyby je, že verze yourdll.dll, kterou používáte, je příliš stará a A ještě nebyla definována.

Následující ukázka vygeneruje CS1684.

Příklad 1

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

Příklad 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(); }  
}  

Příklad 3

Nyní znovu sestavíme první sestavení a vynecháme definici třídy C2, která nebude definována v rekompilace.

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

Příklad 4

Tento modul odkazuje na druhý modul pomocí identifikátoru Ref. Druhý modul ale obsahuje odkaz na třídu C2, která již neexistuje kvůli kompilaci v předchozím kroku, a proto se chybová zpráva CS1684 vrátí z kompilace tohoto modulu.

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