Почему IsAssignableFrom и GetInterface дают различные результаты

Я создал тип как это:

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);
}
5
задан Yodah 27 July 2010 в 11:09
поделиться