CA1000: Non dichiarare membri statici su tipi generici
TypeName |
DoNotDeclareStaticMembersOnGenericTypes |
CheckId |
CA1000 |
Category |
Microsoft.Design |
Breaking Change |
Breaking |
Causa
Un tipo generico visibile contiene un membro static (Shared in Visual Basic).
Descrizione della regola
Quando viene chiamato un membro static di tipo generico, è necessario specificare l'argomento di tipo relativo al tipo. Quando viene chiamato un membro di istanza generica che non supporta l'inferenza, è necessario specificare l'argomento di tipo relativo al membro. La sintassi per la specifica dell'argomento di tipo in questi due casi è diversa e dà facilmente adito a confusione, come dimostrato nelle chiamate seguenti:
' Shared method in a generic type.
GenericType(Of Integer).SharedMethod()
' Generic instance method that does not support inference.
someObject.GenericMethod(Of Integer)()
// Static method in a generic type.
GenericType<int>.StaticMethod();
// Generic instance method that does not support inference.
someObject.GenericMethod<int>();
In generale è consigliabile evitare entrambe le dichiarazioni precedenti, in modo che non sia necessario specificare l'argomento di tipo quando viene chiamato il membro. Ne risulta una sintassi per la chiamata di membri in generics che non si differenzia dalla sintassi per membri non-generics. Per ulteriori informazioni, vedere CA1004: I metodi generici devono fornire parametri di tipo.
Come correggere le violazioni
Per correggere una violazione di questa regola, rimuovere il membro statico oppure cambiarlo in un membro di istanza.
Esclusione di avvisi
Non escludere un avviso da questa regola. La presenza di generics in una sintassi facile da comprendere e utilizzare riduce il tempo necessario all'apprendimento e aumenta la frequenza di adozione di nuove librerie.
Regole correlate
CA1005: Evitare un uso eccessivo di parametri nei tipi generici
CA1010: Gli insiemi devono implementare un'interfaccia generica
CA1002: Non esporre elenchi generici
CA1006: Non annidare tipi generici nelle firme dei membri
CA1004: I metodi generici devono fornire parametri di tipo
Ca1003: Utilizzare istanze di gestori eventi generici
CA1007: Utilizzare generics dove appropriato