Я создал такой тип:
TypeBuilder tb = moduleBuilder.DefineType(myname, TypeAttributes.Class |
TypeAttributes.Public, typeof(BaseClass), new Type[] { typeof(ImyInterface) });
Затем следует множество порождающего кода для конструкторов, методов и т. Д.
Когда я начал использовать класс, я заметил что-то странное. Я хочу проверить, действительно ли созданный мной тип 'myname' реализует ImyInterface. Я ожидаю, что оба из следующих утверждений вернут истину:
// 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??
}
Итак, я создал класс, который реализует ImyInterface, но который нельзя назначить объекту типа ImyInterface, что мне не хватает?
Между прочим, здесь не используются общие шаблоны, а интерфейс является лишь базовым для проверки концепции:
public interface ITestInterface
{
int CalcSquaredInteger(int number);
}