Делегат не содержит определения для «CreateDelegate» - PullRequest
0 голосов
/ 06 ноября 2018

Использование Unity 2018-2017 с той же проблемой при сборке для сети Ошибка CS0117: «Делегат» не содержит определения для «CreateDelegate» Это метод:

 private V CreateDelegate<V>(MethodInfo method, Object target) where V : class
    {

        var ret = (Delegate.CreateDelegate(typeof(V), target, method) as V);

        if (ret == null)
        {
            throw new ArgumentException("Unabled to create delegate for method called " + method.Name);
        }
        return ret;

    }

Здание для UWP. Использование system.Linq Я пытался с "MethodInfo", но, возможно, некоторые параметры неверны. Этот метод недоступен?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

1. Ваш тип возвращаемого значения - класс, а не делегат.

where V : class

Так что этот метод даже не имеет смысла. Вы получите недопустимое исключение приведения.

2. CreateDelegate принимает 2 параметра, а не 3.

Я даже не знаю, для чего здесь служит target, поэтому я даже не могу догадаться, что ты пытаешься сделать.

0 голосов
/ 06 ноября 2018

На какую платформу / среду выполнения вы ориентируетесь? Я не знаю о Mono, но стандарт .Net 1.x не поддерживает Delegate.CreateDelegate. Всегда имейте в виду, что вы пишете свой код для ограниченного подмножества .Net Framework. Также имейте в виду, что ваш код неизбежно будет AOT-компилироваться на некоторых платформах (il2cpp, iOS и т. Д.), Поэтому некоторые функции отражения / генерации будут недоступны.

Примечание. AOT означает опережающее время, т. Е. Ваш код скомпилирован с машинными инструкциями, а не с промежуточным языком. Отражение - это когда вы используете сам код в качестве данных, поэтому, например, вы можете получить список свойств, которые определяет класс. Emit означает генерацию кода во время выполнения. Если вы не понимаете, что это такое, вам, вероятно, стоит заняться изучением. В долгосрочной перспективе оно того стоит.

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