Вызовать метод через отражение, которое принимает делегат в качестве параметраC#

Место общения программистов C#
Ответить
Гость
 Вызовать метод через отражение, которое принимает делегат в качестве параметра

Сообщение Гость »

Мне нужно вызвать метод с помощью отражения, который имеет один параметр этого типа: < /p>

Код: Выделить всё

public delegate void WriteLogMessage(string msg);

public void SetLogTarget(WriteLogMessage target)
{
this.target = target;
}
< /code>
То, что я пробовал до сих пор, - это объявить делегат с той же подписью. < /p>
public delegate void LogTarget(string message);
< /code>
код, где я делаю вызов отражения: < /p>
var methodInfo = typeof(log4net.ILog).GetMethod("Debug", BindingFlags.Public | BindingFlags.Instance, new Type[] { typeof(string)});

var delegateType = typeof(LogTarget);

var del = Delegate.CreateDelegate(delegateType, methodInfo); // throws

var typeClass = assembly.GetType("the.class.with.that.method");
MethodInfo method = typeClass.GetMethod("SetLogTarget");
method.Invoke(instance, new object[] { del });
Исключение, которое я получаю, не может быть связано с целевым методом, потому что его подпись не совместима с сигналом с типом делегата.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... -parameter
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»