he creado un tipo como éste:¿Por qué IsAssignableFrom y GetInterface dan resultados diferentes
TypeBuilder tb = moduleBuilder.DefineType(myname, TypeAttributes.Class |
TypeAttributes.Public, typeof(BaseClass), new Type[] { typeof(ImyInterface) });
Entonces un montón de ilgenerating código siguiente para los constructores, métodos etc. Cuando comienzo a usar la clase me di cuenta de algo extraño. Quiero comprobar si el tipo 'myname' que creé realmente implementa ImyInterface. Yo esperaría que ambas de las siguientes afirmaciones devuelven true:
// t is Type 'myName'
Type baseInterface = t.GetInterface(typeof(ImyInterface).name);
if (baseType != null)
{
// this is actually true, as I expected
}
if (typeof(ImyInterface).isAssignableFrom(t))
{
// the if clause is false, but I don't have a clue why??
}
Así que he creado una clase que implementa IMyInterface pero que no se puede asignar a un objeto de tipo IMyInterface, lo que me estoy perdiendo?
Por cierto, no hay genéricos involucrados y la interfaz es simplemente una básica para poner a prueba el concepto:
public interface ITestInterface
{
int CalcSquaredInteger(int number);
}
¿hay genéricos involucrados? ¿cómo se declara la interfaz? –
Sin genéricos, agregué la interfaz de ejemplo a la pregunta. – Yodah
¿Qué es "ImyInterface" en el código anterior? Teniendo en cuenta que estás llamando a un "nombre" de propiedad, no puede ser solo una interfaz, ¿o sí? –