Pergunta

Eu tenho uma interface definida assim:

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

E quando tento fazer:Mockery mockery = new Mockery(); IDatabase db = mockery.NewMock<IDatabase>(); Estou tendo o erro a seguir:

System.Typeloadexception: System.Typeloadexception: assinatura do corpo e declaração em uma implementação de método não correspondem

O que está errado? (Estou usando o Visual Studio 2008 com o NMOCK2) Por favor, todos poderiam me dar uma resposta, tenho que terminar isso em breve. Obrigado, Luisa

Foi útil?

Solução

Eu acho que isso pode ser um problema com Nmock, possivelmente até um bug. O tipo IDatabase não é genérico, então quando você invoca Get<T>, diferente TS pode ser usado em tempo de execução. Mas quando o NMOCK está gerando a simulação, não parece entender que esse é o caso, e Kablammo - cada assinatura do método é diferente, dependendo do parâmetro de tipo fornecido.

Tente fazer isso em vez disso:

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

Além disso, não deveria o tipo de Get ser T, não void?

Outras dicas

Eu tive a mesma exceção com minha própria interface. Quando eu mudar a interface para ser público, tudo corre bem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top