Ho un'interfaccia con alcuni metodi generici e volevo implementare un metodo con overload per accettare un'istanza di una classe o il suo valore PK (che è o un int o GUID ma varia).Contaminazioni generiche sui sovraccarichi di metodo
ho aggiunto a metodi simili a questi esempi:
void DoSomething<TKey>(TKey key) where TKey: struct;
void DoSomething<TModel>(TModel model) where TModel : class;
Il 'DoSomething' nome metodo sulla seconda di queste è evidenziato, e l'errore è
Tipo 'ISomeStuff' definisce già un membro chiamato "DoSomething" con gli stessi tipi di parametri.
Sono sorpreso da questo come ho chiaramente definito dai parametri di essere di tipo diverso: uno è una classe e l'altro una struttura.
Perché non è questo sufficiente per rendere le firme diverso?
Eventuali duplicati di [vincoli generici, dove T: struct e dove T: classe] (http://stackoverflow.com/questions/2974519/generic-constraints-where-t-struct-and-where- t-classe). Vedi anche l'articolo di Eric Lippert [qui] (http://blogs.msdn.com/b/ericlippert/archive/2009/12/10/constraints-are- no-part-of-the-signature.aspx). –
@Frederic: come mi è mancato quello !!! –
Apparentemente il riquadro "Correlati" nella barra laterale non l'ha selezionato, quindi potrebbe essere più complicato del solito;) –