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

È stato utile?

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 Ts 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top