|
@@ -205,26 +205,5 @@ namespace Discord.Interactions |
|
|
return instance; |
|
|
return instance; |
|
|
}; |
|
|
}; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
internal static Func<object[], T> CreateLambdaConstructorInvoker(TypeInfo typeInfo) |
|
|
|
|
|
{ |
|
|
|
|
|
var constructor = GetConstructor(typeInfo); |
|
|
|
|
|
var parameters = constructor.GetParameters(); |
|
|
|
|
|
|
|
|
|
|
|
var argsExp = Expression.Parameter(typeof(object[]), "args"); |
|
|
|
|
|
|
|
|
|
|
|
var parameterExps = new Expression[parameters.Length]; |
|
|
|
|
|
|
|
|
|
|
|
for (var i = 0; i < parameters.Length; i++) |
|
|
|
|
|
{ |
|
|
|
|
|
var indexExp = Expression.Constant(i); |
|
|
|
|
|
var accessExp = Expression.ArrayIndex(argsExp, indexExp); |
|
|
|
|
|
parameterExps[i] = Expression.Convert(accessExp, parameters[i].ParameterType); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var newExp = Expression.New(constructor, parameterExps); |
|
|
|
|
|
|
|
|
|
|
|
return Expression.Lambda<Func<object[], T>>(newExp, argsExp).Compile(); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |