Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Błędy i ostrzeżenia związane z metodami rozszerzenia zadeklarowanymi za pomocą
-
CS1100: Metoda ma modyfikator parametrów "
this
", który nie znajduje się w pierwszym parametrze -
CS1101: Modyfikator parametrów "
ref
" nie może być używany z elementem "this
". -
CS1102: Modyfikator parametrów "
out
" nie może być używany z elementem "this
". - CS1103: Pierwszy parametr metody rozszerzenia nie może być typu wskaźnika.
- CS1105: Metody rozszerzeń muszą być statyczne.
- CS1106: Metody rozszerzenia muszą być zdefiniowane w klasie niegenerycznej statycznej.
- CS1109: Metody rozszerzeń muszą być zdefiniowane w klasach statycznych najwyższego poziomu, "name" jest klasą zagnieżdżona.
- CS1110: Nie można zdefiniować nowego rozszerzenia, ponieważ nie można odnaleźć wymaganego typu ExtensionAttribute kompilatora. Czy brakuje odwołania do System.Core.dll?
-
CS1112: Nie używaj 'ExtensionAttribute'. Zamiast tego użyj słowa kluczowego "
this
". - CS1113: Metoda rozszerzenia zdefiniowana na typie wartości nie może być używana do tworzenia delegatów.
- CS1743: Nie można określić wartości domyślnej dla parametru "this".
- CS9281: Deklaracje rozszerzeń mogą nie mieć nazwy.
- CS9282: Deklaracje rozszerzeń mogą zawierać tylko metody lub właściwości.
- CS9283: Rozszerzenia muszą być deklarowane w klasie statycznej najwyższego poziomu, innej niż ogólna.
- CS9284: Parametr odbiornika rozszerzenia nie może mieć wartości domyślnej.
- CS9285: Kontener rozszerzenia może mieć tylko jeden parametr odbiornika.
- CS9287: Parametr odbiorcy nie może mieć takiej samej nazwy jak parametr typu kontenera rozszerzenia.
- CS9288: Parametr, zmienna lokalna lub funkcja lokalna nie może mieć takiej samej nazwy jak parametr typu kontenera rozszerzenia.
- CS9289: Parametr typu elementu członkowskiego ma taką samą nazwę jak parametr typu kontenera rozszerzenia.
- CS9290: Parametr, zmienna lokalna lub funkcja lokalna nie może mieć takiej samej nazwy jak parametr rozszerzenia.
-
CS9291: "
value
": automatycznie wygenerowana nazwa parametru powoduje konflikt z nazwą parametru rozszerzenia. - CS9292: Parametr typu ma taką samą nazwę jak parametr rozszerzenia.
- CS9293: Nie można użyć parametru rozszerzenia w tym kontekście.
-
CS9294: "
value
": automatycznie wygenerowana nazwa parametru powoduje konflikt z nazwą parametru typu rozszerzenia. - CS9295: Typ rozszerzony musi odwoływać się do wszystkich parametrów typu zadeklarowanych przez rozszerzenie, ale parametr typu nie jest przywołyny.
-
CS9300:
ref
Parametr odbiornika bloku rozszerzenia musi być typem wartości lub typem ogólnym ograniczonym do struktury. -
CS9301: Parametr odbiornika "
in
" lub "ref readonly
" rozszerzenia musi być konkretnym (niegeneryjnym) typem wartości. - CS9302: nowy chroniony członek zadeklarowany w bloku rozszerzenia.
- CS9303: Nie można w bloku rozszerzenia z parametrem odbiornika bez nazwy zadeklarować elementów członkowskich wystąpienia.
- CS9304: Nie można zadeklarować metod dostępu tylko do inicjowania w bloku rozszerzenia.
- CS9305: Nie można używać modyfikatorów w nienazwanym parametrze odbiornika bloku rozszerzenia.
Typowe błędy deklaracji rozszerzeń
Kompilator emituje te błędy, gdy naruszasz reguły stosowane do wszystkich deklaracji składowych rozszerzenia, niezależnie od wybranej składni:
-
CS1102: Modyfikator parametrów "
out
" nie może być używany z elementem "this
". - CS1106: Metody rozszerzenia muszą być zdefiniowane w klasie niegenerycznej statycznej.
- CS1103: Pierwszy parametr metody rozszerzenia nie może być typu wskaźnika.
- CS1109: Metody rozszerzeń muszą być zdefiniowane w klasach statycznych najwyższego poziomu, "name" jest klasą zagnieżdżona.
- CS1113: Metoda rozszerzenia zdefiniowana na typie wartości nie może służyć do tworzenia delegatów.
- CS1743: Nie można określić wartości domyślnej dla parametru "this".
- CS9283: Rozszerzenia muszą być deklarowane w klasie statycznej najwyższego poziomu, innej niż ogólna.
- CS9284: Parametr odbiornika rozszerzenia nie może mieć wartości domyślnej.
- CS9285: Kontener rozszerzenia może mieć tylko jeden parametr odbiornika.
Każda deklaracja rozszerzenia musi przestrzegać następujących reguł:
- Jego typ zawierający (
class
lubstruct
) musi być niegeneryczny istatic
. - Jego typ zawierający musi być typem najwyższego poziomu. Nie można go zagnieżdżać w innym typie.
- Elementy rozszerzające wystąpienie typu wartości nie mogą być konwertowane na delegatów.
- Parametr odbiorcy nie może zawierać modyfikatora parametrów
out
. - Parametr odbiorcy nie może mieć wartości argumentu domyślnego.
- Nie można rozszerzyć typów wskaźników. Innymi słowy, modyfikator
this
stosowany dla parametru nie może dotyczyć typu wskaźnika.
Błędy związane z deklaracjami bloków rozszerzeń
Te błędy są specyficzne dla bloków rozszerzeń — funkcji języka C# 14. Bloki rozszerzeń są deklarowane przy użyciu extension
słowa kluczowego w klasie statycznej. Element extension
deklaruje typ i nazwę odbiorcy. Wszystkie elementy wewnątrz bloku zadeklarowane z extension
są członkami rozszerzenia dla tego odbiornika:
- CS9281: Deklaracje rozszerzeń mogą nie mieć nazwy.
- CS9282: Deklaracje rozszerzeń mogą zawierać tylko metody lub właściwości.
- CS9287: Parametr odbiorcy nie może mieć takiej samej nazwy jak parametr typu kontenera rozszerzenia.
- CS9288: Parametr, zmienna lokalna lub funkcja lokalna nie może mieć takiej samej nazwy jak parametr typu kontenera rozszerzenia.
- CS9289: Parametr typu członka ma taką samą nazwę jak parametr typu rozszerzalnego kontenera.
- CS9290: Parametr, zmienna lokalna lub funkcja lokalna nie może mieć takiej samej nazwy jak parametr rozszerzenia.
-
CS9291: "
value
": automatycznie wygenerowana nazwa parametru powoduje konflikt z nazwą parametru rozszerzenia. - CS9292: Parametr typu ma taką samą nazwę jak parametr rozszerzenia.
- CS9293: Nie można użyć parametru rozszerzenia w tym kontekście.
-
CS9294: "
value
": automatycznie wygenerowana nazwa parametru powoduje konflikt z nazwą parametru typu rozszerzenia. - CS9295: Typ rozszerzony musi odwoływać się do wszystkich parametrów typu zadeklarowanych przez rozszerzenie, ale parametr typu nie jest przywołyny.
-
CS9300:
ref
Parametr odbiornika bloku rozszerzenia musi być typem wartości lub typem ogólnym ograniczonym do struktury. -
CS9301: Parametr odbiornika "
in
" lub "ref readonly
" rozszerzenia musi być konkretnym (niegeneryjnym) typem wartości. - CS9302: nowy chroniony członek zadeklarowany w bloku rozszerzeń.
- CS9303: Nie można zadeklarować elementów instancji w bloku rozszerzenia z nienazwanym parametrem odbiorcy.
- CS9304: Nie można zadeklarować akcesorów tylko do inicjalizacji w bloku rozszerzenia.
- CS9305: Nie można używać modyfikatorów w nienazwanym parametrze odbiornika bloku rozszerzenia.
Deklaracje rozszerzeń muszą być zgodne z następującymi regułami:
- Rozszerzenie nie może zawierać tokenu nazwy. Rozszerzenie deklaruje tylko odbiornik.
- Parametr odbiorcy nie może mieć wartości domyślnej.
Członkowie rozszerzenia zadeklarowani w bloku rozszerzenia muszą przestrzegać tych reguł, oprócz typowych reguł:
- Tylko metody i właściwości są prawidłowymi typami składowych rozszerzeń. Członkowie rozszerzenia mogą rozszerzać instancję lub typ.
- Rozszerzenie musi podać nazwę parametru dla odbiorcy, aby zawierały składniki, które rozszerzają wystąpienie.
- Nazwa parametru odbiorcy musi być unikatowa w tym bloku rozszerzenia.
- Wszystkie elementy członkowskie rozszerzenia muszą używać wszystkich parametrów typu zadeklarowanych w rozszerzeniu. Mogą dodawać więcej parametrów typu.
Błędy związane z this
metodami rozszerzenia parametrów
Te błędy są specyficzne dla metod rozszerzenia, w których deklarujesz odbiornik, dodając this
modyfikator do pierwszego parametru metody:
-
CS1100: Metoda ma modyfikator parametrów "
this
", który nie znajduje się w pierwszym parametrze -
CS1101: Modyfikator parametrów "
ref
" nie może być używany z elementem "this
". - CS1105: Metody rozszerzeń muszą być statyczne.
- CS1110: Nie można zdefiniować nowego rozszerzenia, ponieważ nie można odnaleźć wymaganego typu ExtensionAttribute kompilatora. Czy brakuje odwołania do System.Core.dll?
-
CS1112: Nie używaj 'ExtensionAttribute'. Zamiast tego użyj słowa kluczowego "
this
".
Metoda rozszerzająca, w której obiekt odbiorcy zawiera modyfikator this
, musi stosować się do tych reguł oprócz typowych reguł:
- Metoda musi mieć
static
modyfikator. - Modyfikator
this
parametrów musi zostać zastosowany do pierwszego parametru. Nie można go zastosować do innych parametrów metody . - Nie można zastosować modyfikatora do pierwszego parametru
ref
out
. Aby zastosowaćref
, należy przekonwertować na blok rozszerzenia. - W aplikacjach .NET Framework
System.Core.dll
należy dodać jako odwołanie. - Musisz określić
this
modyfikator pierwszego parametru. Zamiast tego nie można bezpośrednio użyć atrybutu ExtensionAttribute .