Aquí hay una prueba que, en mi opinión, debería aprobar, pero no es así.¿Los tipos de interfaz genérica abierta de implementación abierta no son iguales al tipo de interfaz?
[TestMethod]
public void can_get_open_generic_interface_off_of_implementor()
{
typeof(OpenGenericWithOpenService<>).GetInterfaces().First()
.ShouldEqual(typeof(IGenericService<>));
}
public interface IGenericService<T> { }
public class OpenGenericWithOpenService<T> : IGenericService<T> { }
- ¿Por qué esto no pasa?
- Dado
Type t = typeof(OpenGenericWithOpenService<>)
¿cómo obtengo typeof (IGenericService <>)?
En general tengo curiosidad, pero si se está preguntando qué estoy haciendo, estoy escribiendo una convención de Structuremap que reenvía todas las interfaces implementadas por una clase a la implementación (como singleton).
Pregunta crujiente. Investigación :) –
Si realmente desea que pase la prueba, puede comparar los GUID. –