Ostrzeżenie kompilatora (poziom 1) CS1684
Odwołanie do typu "Nazwa typu" oświadczenia jest zdefiniowane w przestrzeni nazw, ale nie można go odnaleźć
Ten błąd może być spowodowany odwołaniem wewnątrz jednej przestrzeni nazw odwołującej się do typu, który mówi, że istnieje wewnątrz drugiej przestrzeni nazw, ale typ nie istnieje. Na przykład mydll.dll mówi, że typ A
istnieje wewnątrz yourdll.dll, ale w yourdll.dll nie istnieje taki typ. Jedną z możliwych przyczyn tego błędu jest to, że używana wersja yourdll.dll jest zbyt stara i A
nie została jeszcze zdefiniowana.
Poniższy przykład generuje cs1684.
// CS1684_a.cs
// compile with: /target:library /keyfile:CS1684.key
public class A {
public void Test() {}
}
public class C2 {}
// 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(); }
}
Teraz ponownie skompilujemy pierwszy zestaw, pomijając definicję klasy C2, która nie ma być zdefiniowana w rekompilacji.
// CS1684_c.cs
// compile with: /target:library /keyfile:CS1684.key /out:CS1684_a.dll
public class A {
public void Test() {}
}
Ten moduł odwołuje się do drugiego modułu za pomocą identyfikatora Ref
. Jednak drugi moduł zawiera odwołanie do klasy C2
, która już nie istnieje z powodu kompilacji w poprzednim kroku, a zatem komunikat o błędzie CS1684 jest zwracany z kompilacji tego modułu.
// CS1684_d.cs
// compile with: /reference:cs1684_a.dll /reference:cs1684_b.dll
// CS1684 expected
class Tester
{
public static void Main()
{
Ref.GetA().Test();
}
}
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię: