.NET 4.x Как преобразовать переменную в метод - C#
Формулировка задачи:
Всем привет!
Есть код:
где
obj[i] - это некий экземпляр класса из списка объектов, метод которого мы хотим вызвать
p.Key - название метода
И все работает, ошибок нет. Но медленно. Именно в Method.Invoke медленно
Сравнил с таким способом:
Последний отрабатывает более, чем в 10 раз быстрее, но минус в том, что этот способ не универсален и его надо прописывать для каждого типа...
Пробовал его унифицировать, дошел до такого момента:
Этот код тоже работает, но не универсален.
далее пытался так:
ошибка:
Как можно это решить?
Вот так к сожалению Func < TD[p.Value] >не получается
но не прокатывает(
p.Value = typeof(string); Delegate de = Delegate.CreateDelegate( TD[p.Value], obj[i], p.Key); sq += "'" + Convert.ToString(de.Method.Invoke(obj[i], null)) + "', ";
Dictionary<Type, Type> TD = new System.Collections.Generic.Dictionary<Type, Type>(); TD.Add(typeof(string), typeof(Func<string>)); TD.Add(typeof(int), typeof(Func<int>)); //etc
Func<string> de = (Func<string>)Delegate.CreateDelegate( typeof(Func<string>), obj[i], p.Key); sq += de();
Func<string> de = (Func<string>)Delegate.CreateDelegate( TD[p.Value], obj[i], p.Key); sq += Convert.ToString(de());
Delegate de = Delegate.CreateDelegate( TD[p.Value], obj[i], p.Key); sq += Convert.ToString(de());
"de" является "переменная", но используется как "метод"
Хотелось бы что-то наподобие такого:
Func<TD[p.Value]> de = (Func<TD[p.Value]>)Delegate.CreateDelegate( TD[p.Value], obj[i], p.Key); sq += Convert.ToString(de());
Решение задачи: «.NET 4.x Как преобразовать переменную в метод»
textual
Листинг программы
internal static Func<T> CreateDelegate<T>(T obj, string name) { return (Func<T>)System.Delegate.CreateDelegate(typeof(Func<T>), obj, name); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д