Beffardo aiuto? Non riesco a trovare qual è il problema
Domanda
Ho un'interfaccia definded in questo modo:
public interface IDatabase{ void Get<TTypeToFetch> ();}
e quando cerco di fare:
Mockery mockery = new Mockery();
IDatabase db = mockery.NewMock<IDatabase>();
Ottengo il seguente errore:
System.TypeLoadException: System.TypeLoadException: Firma del corpo e la dichiarazione in un'implementazione del metodo non corrispondono
Cosa c'è di sbagliato? (Sto usando Visual Studio 2008 con nmock2) Si prega poteva tutti darmi una risposta, devo finire così presto. Grazie, Luisa
Soluzione
Credo che questo potrebbe essere un problema con NMock, forse anche un bug. Il tipo IDatabase
non è generica, in modo che quando si richiama Get<T>
, diversi T
s potrebbe essere utilizzato in fase di esecuzione. Ma quando NMock sta generando il mock, non sembra comprendere che questo è il caso, e kablammo -. Ogni firma metodo è diverso, a seconda del tipo fornito parametro
Prova a fare questo, invece:
public interface IDatabase<T> {
void Get<T>();
}
Inoltre, non dovrebbe il tipo di Get
essere T
, non void
?
Altri suggerimenti
Ho avuto la stessa eccezione con la mia propria interfaccia. Quando cambio di interfaccia di essere tutto ok pubblico corre.