C # Reflection Создать интерфейс во время выполнения - PullRequest
1 голос
/ 07 июня 2019

Есть ли способ создать интерфейс во время выполнения?Я попытался:

string typeSignature = "IFoo";
...
TypeBuilder tb = moduleBuilder.DefineType(typeSignature, TypeAttributes.Interface);

Но это дает исключение:

'Интерфейс должен быть объявлен абстрактным.'

Итак, я попытался:

TypeBuilder tb = moduleBuilder.DefineType(typeSignature, TypeAttributes.Interface 
    | TypeAttributes.Abstract);
Type dynamicType = tb.CreateType();

Но dynamicType.GetType().IsInterface возвращает ложь.По некоторым причинам он считает, что dynamicType является классом.

1 Ответ

1 голос
/ 07 июня 2019

Как предложил Ральф в комментарии, вы можете попробовать,

TypeBuilder tb = moduleBuilder.DefineType(
    typeSignature,
    TypeAttributes.Interface | TypeAttributes.Abstract | TypeAttributes.Public);
Type dynamicType = tb.CreateType();

dynamicType.IsInterface      // true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...