Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Gli errori seguenti vengono generati quando i generatori di origine o gli intercettori vengono caricati durante una compilazione:
-
CS9137: la funzionalità sperimentale 'intercettori' non è abilitata. Aggiungere
<Features>InterceptorsPreview<Features>
al progetto. - CS9138: Il metodo non può essere usato come intercettore perché il metodo o il tipo che lo contiene ha parametri di tipo.
- CS9139: Impossibile intercettare: la compilazione non contiene un file con percorso.
- CS9140: impossibile intercettare: la compilazione non contiene un file con percorso. Intendevi usare un percorso diverso?
- CS9141: il numero di riga e carattere specificato non fa riferimento a un nome di metodo intercettabile, ma piuttosto a un token.
-
CS9142: il file specificato contiene
n
righe, che è minore del numerom
di riga specificato. -
CS9143: La riga specificata è lunga
c
caratteri, che è meno del numero di caratteri forniton
. -
CS9144: impossibile intercettare il metodo
M
con l'intercettoreV
perché le firme non corrispondono. - CS9145: Impossibile intercettare: il percorso non è mappato. Percorso mappato previsto.
- CS9146: un metodo intercettore deve essere un metodo membro ordinario.
-
CS9147: il numero di riga e carattere specificato non fa riferimento all'inizio di un token. Intendevi usare la riga
n
e il caratterec
? -
CS9148: l'intercettore deve avere un
this
parametro corrispondente al parametro. -
CS9149: l'intercettore non deve avere un
this
parametro perché il metodo non dispone di unthis
parametro. -
CS9150: l'intercettore non può avere un percorso di
null
file. -
CS9151: impossibile intercettare il nome
M
del metodo possibile perché non viene richiamato. - CS9152: impossibile intercettare una chiamata nel file con questo percorso perché più file nella compilazione hanno questo percorso.
- CS9153: la chiamata indicata viene intercettata più volte.
-
CS9155: impossibile intercettare la chiamata con
M
perché non è accessibile all'interno diV
. -
CS9156: Impossibile intercettare la chiamata a
M
conV
a causa di una differenza nei 'modificatori' con ambito o negli attributi[UnscopedRef]
. -
CS9157: i numeri di riga e di carattere specificati per
InterceptsLocationAttribute
devono essere positivi. - CS9160: non è possibile intercettare un operatore nameof.
-
CS9161: un intercettore non può essere contrassegnato con
UnmanagedCallersOnlyAttribute
. - CS9177: l'intercettore deve essere non generico o avere un'arità corrispondente.
- CS9178: Il metodo deve essere non generico per la corrispondenza
- CS9206: un intercettore non può essere dichiarato nello spazio dei nomi globale.
- CS9207: impossibile intercettare perché il metodo non è una chiamata di un metodo membro ordinario.
Gli avvisi seguenti vengono generati quando i generatori di origine o gli intercettori vengono caricati durante una compilazione:
-
CS9154: intercettazione di una chiamata a
M
con intercettoreV
, ma le firme non corrispondono. - CS9158: La nullabilità dei tipi di riferimento nel tipo di ritorno non corrisponde al metodo intercettabile.
- CS9159: La nullabilità dei tipi di riferimento nel tipo di parametro non è coerente con il metodo intercettabile.
-
CS9270: '
InterceptsLocationAttribute(string, int, int)
' non è supportato. Passare invece alla generazione basata su 'InterceptableLocation' di questi attributi. (https://github.com/dotnet/roslyn/issues/72133)
Questi errori e avvisi seguono questi temi:
Gli intercettori sono sperimentali
Questo errore indica che è necessario abilitare la funzionalità sperimentale.
-
CS9137: la funzionalità sperimentale 'intercettori' non è abilitata. Aggiungere
<Features>InterceptorsPreview<Features>
al progetto.
In C# 12 gli intercettori sono sperimentali. Gli intercettori sono soggetti a modifiche che rompono la compatibilità o alla rimozione in una versione futura. Pertanto, non è consigliabile per le applicazioni di produzione o rilasciate.
Per usare gli intercettori, è necessario impostare l'elemento <Features>InterceptorsPreview<Features>
nel file di progetto. Senza questo flag, gli intercettori sono disabilitati, anche quando sono abilitate altre funzionalità C# 12.
Incongruenza della firma
Gli errori seguenti indicano una mancata corrispondenza tra il metodo intercettore e il metodo intercettabile oppure una violazione delle regole relative alle dichiarazioni del metodo intercettore:
-
CS9144: impossibile intercettare il metodo
M
con l'intercettoreV
perché le firme non corrispondono. -
CS9148:
this
-
CS9149: l'intercettore non deve avere un
this
parametro perché il metodo non dispone di unthis
parametro. -
CS9155: impossibile intercettare la chiamata con
M
perché non è accessibile all'interno diV
. -
CS9156: Impossibile intercettare la chiamata a
M
conV
a causa di una differenza nei modificatori 'scoped' o negli attributi[UnscopedRef]
. - CS9177]: l'intercettore deve essere non generico o avere un'arità corrispondente.
- CS9178: Il metodo deve essere non generico per la corrispondenza
Inoltre, gli avvisi seguenti indicano una mancata corrispondenza tra le firme dell'intercettore e il metodo intercettabile:
-
CS9154: intercettazione di una chiamata a
M
con intercettoreV
, ma le firme non corrispondono. - CS9158: La nullabilità dei tipi di riferimento nel tipo restituito non corrisponde a quella del metodo intercettabile.
- CS9159: La nullabilità dei tipi di riferimento nel tipo di parametro non corrisponde al metodo intercettabile.
-
CS9270: '
InterceptsLocationAttribute(string, int, int)
' non è supportato. Passare invece alla generazione basata su 'InterceptableLocation' di questi attributi. (https://github.com/dotnet/roslyn/issues/72133)
Il metodo intercettore deve essere compatibile con il metodo intercettabile. È necessario seguire queste regole:
- I metodi di istanza possono intercettare metodi di istanza, non metodi statici. Analogamente, i metodi statici possono intercettare solo metodi statici, non metodi di istanza.
- Le firme del metodo per l'intercettore e il metodo intercettabile devono corrispondere: devono avere gli stessi parametri con gli stessi modificatori nello stesso ordine. I tipi di ritorno devono corrispondere.
- I riferimenti ai contesti sicuri devono corrispondere. In altre parole, i parametri corrispondenti
ref
devono esserescoped
o menoscoped
. - Entrambi i metodi devono essere non generici oppure entrambi devono avere lo stesso numero di parametri di tipo.
- È preferibile una firma del costruttore aggiornata
InterceptorLocationAttribute
.
Mapping non corretto
Gli intercettori richiedono una mappatura che associ la funzione intercettabile e la funzione dell'intercettore. Gli errori seguenti indicano un problema con il mapping:
- CS9139: Impossibile intercettare: la compilazione non contiene un file con percorso.
- CS9140: impossibile intercettare: la compilazione non contiene un file con percorso. Intendevi usare un percorso diverso?
- CS9141: il numero di riga e carattere specificato non fa riferimento a un nome di metodo intercettabile, ma piuttosto a un token.
-
CS9142: il file specificato contiene
n
righe, che è minore del numerom
di riga specificato. -
CS9143: la riga specificata è
c
lunga, minore del numeron
di carattere specificato. - CS9145: Impossibile intercettare: il percorso non è mappato. Percorso mappato previsto.
-
CS9147: il numero di riga e carattere specificato non fa riferimento all'inizio di un token. Intendevi usare la riga
n
e il caratterec
? -
CS9150: l'intercettore non può avere un percorso di
null
file. -
CS9157: i numeri di riga e di carattere specificati per
InterceptsLocationAttribute
devono essere positivi.
Un intercettore specifica la posizione nel codice sorgente del metodo intercettabile. Specificare la posizione applicando un [InterceptsLocation]
attributo. Specificare i numeri di riga e di colonna in un file di origine mappato in cui deve essere inserito l'intercettore. Questi errori indicano che qualcosa nell'attributo o nella posizione non corrisponde a una posizione per un metodo intercettabile valido. Per informazioni dettagliate sul formato e i valori per questo attributo, vedere la specifica della funzionalità.
Altri errori
Questi errori indicano altre limitazioni per gli intercettori:
- CS9138: Il metodo non può essere usato come intercettore perché esso o il suo tipo contenitore ha parametri di tipo.
- CS9146: un metodo intercettore deve essere un metodo membro ordinario.
-
CS9151: impossibile intercettare il nome
M
del metodo possibile perché non viene richiamato. - CS9152: impossibile intercettare una chiamata nel file con questo percorso perché più file nella compilazione hanno questo percorso.
- CS9153: la chiamata indicata viene intercettata più volte.
- CS9160: non è possibile intercettare un operatore nameof.
-
CS9161: un intercettore non può essere contrassegnato con
UnmanagedCallersOnlyAttribute
. - CS9206: un intercettore non può essere dichiarato nello spazio dei nomi globale.
- CS9207: impossibile intercettare perché il metodo non è una chiamata di un metodo membro ordinario.
Questi errori indicano che il metodo intercettore viola una delle regole per gli intercettori:
- Gli intercettori non possono essere metodi generici o membri di classi generiche.
- Gli intercettori devono essere membri ordinari. Non possono essere operatori, costruttori di istanza, costruttori statici o finalizzatori.
- I metodi intercettabili devono essere membri ordinari. Non possono essere operatori, costruttori di istanza o statici, finalizzatori, né invocazioni di delegati.
- I metodi intercettabili che non vengono mai richiamati non possono essere intercettati.
- I metodi intercettabili possono essere intercettati al massimo una volta.
- Gli intercettori non possono essere metodi riservati esclusivamente ai chiamanti non gestiti.
- Gli intercettori devono essere contenuti in uno spazio dei nomi.