Рассмотрим ограничения различных методов Load *
. Из MSDN docs ...
LoadFile не загружает файлы в контекст LoadFrom и не разрешает зависимости, используя путь загрузки, как это делает метод LoadFrom.
Более подробную информацию о контекстах загрузки можно найти в документах LoadFrom .
Вам нужно вызвать некоторую форму Delegate.CreateDelegate () , в зависимости от того, является ли рассматриваемый метод статическим или экземплярным методом.
private static Delegate CreateDelegate(this MethodInfo methodInfo, object target) {
Func<Type[], Type> getType;
var isAction = methodInfo.ReturnType.Equals((typeof(void)));
var types = methodInfo.GetParameters().Select(p => p.ParameterType);
if (isAction) {
getType = Expression.GetActionType;
}
else {
getType = Expression.GetFuncType;
types = types.Concat(new[] { methodInfo.ReturnType });
}
if (methodInfo.IsStatic) {
return Delegate.CreateDelegate(getType(types.ToArray()), methodInfo);
}
return Delegate.CreateDelegate(getType(types.ToArray()), target, methodInfo.Name);
}
Delegate
или нет. В этом случае OP, по-видимому, указывает, что он может предварительно предположить MyDelegate
, и в этом случае Nate и решение, включенное в OP, являются лучшими. Это, с другой стороны, является отличным ответом на вопрос other i>, что и нужно делать, если у вас нет доступа к соответствующему типу Delegate
(т. Е. Обычно вы получили MethodInfo
из-за синего цвета по имени) ... но для создания делегата требуется определенно такой тип делегата (несколько пресловутая проблема [цыпленка и яйца] .NET
).
– Glenn Slayden
15 July 2017 в 12:24