Question

J'ai une interface definded comme ceci:

public interface IDatabase{ void Get<TTypeToFetch> ();}

et quand j'essaie de faire: Mockery mockery = new Mockery(); IDatabase db = mockery.NewMock<IDatabase>(); Je reçois l'erreur suivante:

  

System.TypeLoadException: System.TypeLoadException: Signature du corps et de la déclaration dans une mise en œuvre de la méthode ne correspond pas

Qu'est-ce qui ne va pas? (J'utilise Visual Studio 2008 avec nmock2) S'il vous plaît tout le monde pourrait me donner une réponse, je dois finir ce bientôt. Merci, Luisa

Était-ce utile?

La solution

Je pense que cela peut être un problème avec NMock, peut-être même un bug. Le type IDatabase n'est pas générique, donc quand vous invoquez Get<T>, différentes Ts pourrait être utilisé lors de l'exécution. Mais quand NMock génère la maquette, il ne semble pas comprendre que c'est le cas, et Kablammo -. Chaque signature de la méthode est différente, en fonction du paramètre de type fourni

Essayez de faire ceci:

public interface IDatabase<T> {
  void Get<T>();
}

En outre, ne doit pas le type de Get être T, pas void?

Autres conseils

J'ai eu la même exception avec ma propre interface. Quand je change l'interface pour être tout public circule bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top