Burlándose de ayuda? No puedo encontrar cuál es el problema
Pregunta
Tengo una interfaz definded como esto:
public interface IDatabase{ void Get<TTypeToFetch> ();}
y cuando intento hacer:
Mockery mockery = new Mockery();
IDatabase db = mockery.NewMock<IDatabase>();
Me sale el siguiente error:
System.TypeLoadException: System.TypeLoadException: Firma del cuerpo y la declaración en una implementación del método no coinciden
Lo que está mal? (Estoy usando Visual Studio 2008 con nmock2) Por favor, todo el mundo me podría dar una respuesta, tengo que terminar esto pronto. Gracias, Luisa
Solución
Creo que esto puede ser un problema con NMock, posiblemente, incluso un error. El tipo IDatabase
no es genérico, por lo que cuando se invoca Get<T>
, diferentes T
s se podría utilizar en tiempo de ejecución. Pero cuando NMock está generando la maqueta, no parece entender que este es el caso, y Kablammo -. Cada firma método es diferente, dependiendo del tipo de parámetro suministrado
Trate de hacer esto en su lugar:
public interface IDatabase<T> {
void Get<T>();
}
Además, si no el tipo de Get
ser T
, no void
?
Otros consejos
Yo tenía la misma excepción con mi propia interfaz. Cuando cambio de interfaz de ser todo público funciona bien.