метод не поддерживается в .NET.
Это я могу объяснить:
Чтобы проверить, является ли тип перечислением, в конце эта строка называется:
public override bool IsSubclassOf(Type c)
{
throw new NotSupportedException();
}
эта строка:
public virtual bool IsEnum {
get
{
return IsSubclassOf(RuntimeType.EnumType);
}
, которая вызывается этой строкой:
internal static ParameterExpression Make(Type type, string name, bool isByRef) {
if (isByRef) {
return new ByRefParameterExpression(type, name);
} else {
if (!type.IsEnum) {
Сейчас ... О вашем вопросе: не могу сделать.К сожалению, две подсистемы (Reflection.Emit
и Expression
) не очень "совместимы".Как вы знаете, создание методов экземпляров (включая конструкторы) с LambaExpression.CompileToMethod()
не поддерживается.Единственное, что вы можете сделать, - это создать простые (неуниверсальные) статические методы, которые не включают тип, создаваемый с TypeBuilder
, в свои параметры.