Megosztás a következőn keresztül:


Paraméterekkel vagy this blokkokkal deklarált bővítménymódszerekkel extension kapcsolatos hibák és figyelmeztetések

  • CS1100: A metódus rendelkezik egy ""this paramétermódosítóval, amely nem az első paraméteren található
  • CS1101: A "ref" paramétermódosító nem használható a ""this paraméterrel.
  • CS1102: A "out" paramétermódosító nem használható a ""this paraméterrel.
  • CS1103: A bővítménymetódus első paramétere nem lehet mutató típusú.
  • CS1105: A kiterjesztési módszereknek statikusnak kell lenniük.
  • CS1106: A bővítménymetelyeket nem általános statikus osztályban kell definiálni.
  • CS1109: A bővítménymetelyeket felső szintű statikus osztályokban kell definiálni, a "név" beágyazott osztály.
  • CS1110: Nem lehet új bővítményt definiálni, mert a fordító szükséges típusa ExtensionAttribute nem található. Hiányzik egy hivatkozás a System.Core.dll?
  • CS1112: Ne használja a ""ExtensionAttribute parancsot. Használja inkább a "this" kulcsszót.
  • CS1113: Az értéktípuson definiált bővítménymetódus nem használható meghatalmazottak létrehozására.
  • CS1743: Az "ez" paraméter alapértelmezett értéke nem adható meg.
  • CS9281: Előfordulhat, hogy a bővítménydeklarációknak nincs neve.
  • CS9282: A bővítménydeklarációk csak metódusokat vagy tulajdonságokat tartalmazhatnak.
  • CS9283: A bővítményeket felső szintű, nem általános, statikus osztályban kell deklarálni.
  • CS9284: A bővítmény fogadóparamétere nem rendelkezhet alapértelmezett értékkel.
  • CS9285: A bővítménytárolók csak egy fogadóparamétert tartalmazhatnak.
  • CS9287: A fogadóparaméterek neve nem lehet azonos a bővítménytároló típusparaméterével.
  • CS9288: Egy paraméternek, helyi változónak vagy helyi függvénynek nem lehet ugyanaz a neve, mint egy bővítménytároló-típusparaméternek.
  • CS9289: A tagtípus paraméter neve megegyezik a bővítménytároló típusparaméterével.
  • CS9290: Egy paraméternek, helyi változónak vagy helyi függvénynek nem lehet ugyanaz a neve, mint egy bővítményparaméternek.
  • CS9291: ''value: egy automatikusan létrehozott paraméternév ütközik egy bővítményparaméter nevével.
  • CS9292: Egy típusparaméter neve megegyezik a bővítményparaméter nevével.
  • CS9293: Ebben a környezetben nem használható bővítményparaméter.
  • CS9294: ''value: egy automatikusan létrehozott paraméternév ütközik egy bővítménytípus paraméter nevével.
  • CS9295: A kiterjesztett típusnak a bővítmény által deklarált összes típusparaméterre hivatkoznia kell, de a típusparaméterre nincs hivatkozás.
  • CS9300: A bővítményblokkok "ref" fogadóparaméterének értéktípusnak vagy strukturálásra korlátozott általános típusnak kell lennie.
  • CS9301: A kiterjesztés "in" vagy "ref readonly" fogadóparaméterének konkrét (nem általános) értéktípusnak kell lennie.
  • CS9302: egy bővítményblokkban deklarált új védett tag.
  • CS9303: Nem deklarálható a példánytagok név nélküli fogadóparaméterrel rendelkező bővítményblokkban.
  • CS9304: A bővítményblokkokban nem deklarálhatók csak inicializáló hozzáférők.
  • CS9305: Nem használhatók módosítók a bővítményblokk névtelen fogadóparaméterén.

A bővítménydeklarációk gyakori hibái

A fordító ezeket a hibákat akkor bocsátja ki, ha megsérti az összes bővítménytag-deklarációra vonatkozó szabályokat, függetlenül a választott szintaxistól:

  • CS1102: A "out" paramétermódosító nem használható a ""this paraméterrel.
  • CS1106: A bővítménymetelyeket nem általános statikus osztályban kell definiálni.
  • CS1103: A bővítménymetódus első paramétere nem lehet mutató típusú.
  • CS1109: A bővítménymetelyeket felső szintű statikus osztályokban kell definiálni, a "név" beágyazott osztály.
  • CS1113: Az értéktípuson definiált bővítménymetódus nem használható meghatalmazottak létrehozására.
  • CS1743: Az "ez" paraméter alapértelmezett értéke nem adható meg.
  • CS9283: A bővítményeket felső szintű, nem általános, statikus osztályban kell deklarálni.
  • CS9284: A bővítmény fogadóparamétere nem rendelkezhet alapértelmezett értékkel.
  • CS9285: A bővítménytárolók csak egy fogadóparamétert tartalmazhatnak.

A bővítménydeklarációknak a következő szabályokat kell követniük:

  • A benne található típusnak (class vagy struct) nem általánosnak és static nem generikusnak kell lennie.
  • A benne található típusnak legfelső szintű típusnak kell lennie. Más típusba nem ágyazható be.
  • Az értéktípusú példányokat kiterjesztő tagok nem konvertálhatók delegáltakká.
  • A fogadó paraméter nem tartalmazhat paramétermódosítót out .
  • A fogadó paraméter nem rendelkezhet alapértelmezett argumentumértékkel.
  • A mutatótípusok nem bővíthetők. Más szóval a módosító paraméter this nem lehet mutatótípus.

Ezek a hibák a C# 14-funkcióval, a bővítményblokkokkal kapcsolatosak. A bővítményblokkok a kulcsszóval extension vannak deklarálva egy statikus osztályban. A extension vevő típusának és nevének deklarálása. A blokkban lévő összes tag a fogadó bővítménytagja extension :

  • CS9281: Előfordulhat, hogy a bővítménydeklarációknak nincs neve.
  • CS9282: A bővítménydeklarációk csak metódusokat vagy tulajdonságokat tartalmazhatnak.
  • CS9287: A fogadóparaméterek neve nem lehet azonos a bővítménytároló típusparaméterével.
  • CS9288: Egy paraméternek, helyi változónak vagy helyi függvénynek nem lehet ugyanaz a neve, mint egy bővítménytároló-típusparaméternek.
  • CS9289: A tagtípus paraméter neve megegyezik a bővítménytároló típusparaméterével.
  • CS9290: Egy paraméternek, helyi változónak vagy helyi függvénynek nem lehet ugyanaz a neve, mint egy bővítményparaméternek.
  • CS9291: ''value: egy automatikusan létrehozott paraméternév ütközik egy bővítményparaméter nevével.
  • CS9292: Egy típusparaméter neve megegyezik a bővítményparaméter nevével.
  • CS9293: Ebben a környezetben nem használható bővítményparaméter.
  • CS9294: ''value: egy automatikusan létrehozott paraméternév ütközik egy bővítménytípus paraméter nevével.
  • CS9295: A kiterjesztett típusnak a bővítmény által deklarált összes típusparaméterre hivatkoznia kell, de a típusparaméterre nincs hivatkozás.
  • CS9300: A bővítményblokkok "ref" fogadóparaméterének értéktípusnak vagy strukturálásra korlátozott általános típusnak kell lennie.
  • CS9301: A kiterjesztés "in" vagy "ref readonly" fogadóparaméterének konkrét (nem általános) értéktípusnak kell lennie.
  • CS9302: egy bővítményblokkban deklarált új védett tag.
  • CS9303: Példánytagok nem deklarálhatók név nélküli fogadóparaméterrel rendelkező bővítményblokkban.
  • CS9304: Kiterjesztési blokkokban nem lehet csak inicializálható hozzáférőket deklarálni.
  • CS9305: Nem használhatók módosítók a bővítményblokk névtelen fogadóparaméterén.

A bővítménydeklarációknak az alábbi szabályokat kell követniük:

  • A bővítmény nem tartalmazhat név azonosítót. A bővítmény csak a fogadót deklarálja.
  • A fogadó paraméter nem rendelkezhet alapértelmezett értékkel.

A bővítményblokkban deklarált bővítménytagoknak a közös szabályokon kívül az alábbi szabályokat kell követniük:

  • Csak a metódusok és tulajdonságok érvényesek a bővítménytagtípusokra. A bővítménytagok kiterjeszthetnek egy példányt vagy típust.
  • A bővítménynek meg kell adnia a fogadó paraméter nevét ahhoz, hogy olyan tagokat tartalmazzon, amelyek egy objektum példányát bővítik.
  • A fogadó paraméter nevének egyedinek kell lennie a bővítményblokkban.
  • Minden bővítménytagnak a bővítményen deklarált összes típusparamétert kell használnia. További típusparamétereket is hozzáadhatnak.

Ezek a hibák kiterjesztési metódusokra vonatkoznak, ahol a fogadót a this módosító metódus első paraméteréhez való hozzáadásával deklarálja.

  • CS1100: A metódus rendelkezik egy ""this paramétermódosítóval, amely nem az első paraméteren található
  • CS1101: A "ref" paramétermódosító nem használható a ""this paraméterrel.
  • CS1105: A kiterjesztési módszereknek statikusnak kell lenniük.
  • CS1110: Nem lehet új kiterjesztést definiálni, mert a fordító által igényelt típus ExtensionAttribute nem található. Hiányzik egy hivatkozás a System.Core.dll-re?
  • CS1112: Ne használja a ""ExtensionAttribute parancsot. Használja inkább a "this" kulcsszót.

Egy olyan bővítménymetódusnak, amelyben a fogadópéldány tartalmazza a this módosítót, a közös szabályok mellett az alábbi szabályokat kell követnie:

  • A metódusnak rendelkeznie kell a static módosítóval.
  • A this paramétermódosítót az első paraméterre kell alkalmazni. A metódus más paramétereire nem alkalmazható.
  • A refout paramétermódosító nem alkalmazható az első paraméterre. Az alkalmazáshoz ref bővítményblokká kell konvertálnia.
  • A .NET-keretrendszerbeli alkalmazásokban System.Core.dll referenciaként kell hozzáadni.
  • Meg kell adnia a this módosítót az első paraméteren. Ehelyett nem használhatja közvetlenül az ExtensionAttribute attribútumot.