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