Fájl helyi típusaival kapcsolatos hibák és figyelmeztetések elhárítása

A C#-fordító hibákat és figyelmeztetéseket generál, ha a fájl helyi típusaival visszaél. A fájl helyi típusai csak azon a fájlon belül láthatók, amelyben deklarálja őket. Ezek a diagnosztikák segítenek követni a fájl helyi típusainak deklarálására és használatára vonatkozó szabályokat.

  • CS9051: A fájl-helyi típusa nem használható nem fájl-helyi típus tag aláírásban.
  • CS9052: A fájl helyi típusa nem használhat akadálymentességi módosítókat.
  • CS9053: A fájl helyi típusa nem használható nem helyi típusú alaptípusként.
  • CS9054: A fájl helyi típusát felső szintű típusban kell definiálni; beágyazott típus.
  • CS9055: A fájl helyi típusa nem használható a "globális statikus használatával" irányelvben.
  • CS9056: A típusok és aliasok nem nevezhetők fájlnak.
  • CS9068: A fájl helyi típusát egyedi elérési úttal rendelkező fájlban kell deklarálni. Az elérési út több fájlban is használható.
  • CS9069: A fájl helyi típusa nem használható, mert a fájl elérési útja nem alakítható át egyenértékű UTF-8 bájtos reprezentációvá.
  • CS9071: A névtér már tartalmaz egy definíciót a fájl típusához.

Láthatósági korlátozások

  • CS9051: A fájl helyi típusa nem használható a nem fájl helyi típusú tagaadítmákban.
  • CS9052: A fájl helyi típusa nem használhat akadálymentességi módosítókat.
  • CS9053: A fájl helyi típusa nem használható nem helyi típusú alaptípusként.
  • CS9055: A fájl helyi típusa nem használható a "globális statikus használatával" irányelvben.

A fájl helyi típusa csak a deklarációt tartalmazó fájlban látható. A fordító korlátozásokat kényszerít ki, hogy megakadályozza a fájl helyi típusainak "kiszivárgását" a kívánt hatókörön kívül:

  • A fájl helyi típusa nem jelenhet meg a nem fájlalapú típusban (CS9051) deklarált tagok aláírásában (paraméterek, visszatérési típus vagy típuskorlátozások). Ez a korlátozás biztosítja, hogy a más fájlokban lévő kód ne függhessen a nem elérhető típusoktól.
  • A fájl helyi típusok nem rendelkezhetnek explicit akadálymentességi módosítókkal, például public, internalvagy private (CS9052). A file módosító már definiálja a típus láthatósági hatókörét, így a többi hozzáférési módosító értelmetlenné válik.
  • A nem fájlalapú típus nem örökölhető fájl helyi típustól (CS9053). Ha egy származtatott típus látható a fájlon kívül, az alaptípusnak is láthatónak kell lennie. A nem fájlalapú típus azonban implementálhat egy fájl-helyi felületet.
  • A fájl helyi típusa nem használható irányelvben global using static (CS9055). A globális használat a fordításban lévő összes fájlra vonatkozik, de a fájl helyi típusai csak a deklaráló fájlban láthatók.

A hibák megoldásához távolítsa el a módosítót a file típusból, hogy a fájlon kívül is elérhető legyen, vagy módosítsa a fogyasztó kódot, hogy elkerülje a fájl helyi típusának felfedését.

Deklarációs szabályok

  • CS9054: A fájl helyi típusát felső szintű típusban kell definiálni; beágyazott típus.
  • CS9056: A típusok és aliasok nem nevezhetők fájlnak.
  • CS9071: A névtér már tartalmaz egy definíciót a fájl típusához.

A fordító kikényszeríti a fájl-helyi típusok deklarálására vonatkozó szabályokat:

  • A fájl helyi típusait a fájl legfelső szintjén kell deklarálni, nem pedig egy másik típusba (CS9054) ágyazva. A hiba megoldásához helyezze át a típusdeklarációt bármely tartalomtípuson kívülre, vagy távolítsa el a file módosítót.
  • A típusnevek és típus álnevek nem használhatók file néven, mert ez mostantól környezetfüggő kulcsszó (CS9056). A hiba megoldásához nevezze át a típust, vagy lépjen @file ki az azonosítóból.
  • Egy fájl nem deklarálhat több, azonos nevű fájltípust ugyanabban a névtérben (CS9071). Minden fájl helyi típusának egyedi névvel kell rendelkeznie a fájl névterének hatókörében. A hiba megoldásához nevezze át az egyik ütköző típust.

A fájl elérési útjának követelményei

  • CS9068: A fájl helyi típusát egyedi elérési úttal rendelkező fájlban kell deklarálni. Az elérési út több fájlban is használható.
  • CS9069: A fájl helyi típusa nem használható, mert a fájl elérési útja nem alakítható át egyenértékű UTF-8 bájtos reprezentációvá.

A fordító a fájl útvonalát használja, hogy egyedi belső neveket generáljon a fájlszintű típusokhoz. Ez az elnevezési séma lehetővé teszi, hogy több fájl ütközés nélkül deklarálja az azonos nevű fájltípusokat:

  • A helyi fájltípusokat tartalmazó fájloknak egyedi elérési útnak kell lenniük a fordításban (CS9068). Ez a hiba általában olyan forrásgenerátoroknál fordul elő, amelyek több, azonos elérési úttal rendelkező fájlt hoznak létre. A hiba elhárításához győződjön meg arról, hogy minden létrehozott fájlnak külön elérési útja van.
  • A fájl elérési útjának UTF-8 kódolássá (CS9069) kell konvertálhatónak lennie. Ez a hiba akkor fordul elő, ha a fájl elérési útja olyan karaktereket tartalmaz, amelyek nem jeleníthetők meg az UTF-8-ban. A hiba megoldásához nevezze át a fájlt vagy könyvtárat úgy, hogy az UTF-8-ban érvényes karaktereket használjon.

Ezek a hibák leggyakrabban a forrásgenerátor szerzőit érintik. A fájl helyi típusok forrásgenerátorokban való használatával kapcsolatos további információkért lásd a fájl helyi típusait.