System.ArgumentException: "Тип должен быть производным от Delegate." - C#
Формулировка задачи:
У меня задача "Написать код который будет создавать функцию из строки".
Написал код:
Не могу понять из-за чего всё время вылезает
System.ArgumentException: Тип должен быть производным от Delegate.
хоть с каким типом, всё время одна же ошибка.
Не подскажете как исправить?
Или такая функция уже есть.
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using Microsoft.CSharp;
- using static System.Console;
- using System.CodeDom.Compiler;
- namespace Challenges
- {
- class Program
- {
- static void Main(string[] args)
- {
- CompilerParameters parameters = new CompilerParameters { GenerateInMemory = true }; //Будет ли в памяти компилироваться
- parameters.ReferencedAssemblies.Add("System.dll");
- CSharpCodeProvider provider = new CSharpCodeProvider();
- //компиляция
- var results = provider.CompileAssemblyFromSource(parameters, /*код*/ $@"
- using System;
- public static class FuncCreator
- {{
- public static int F()
- {{
- return 1;
- }}
- }}"); /
- System.Reflection.MethodInfo method = results.CompiledAssembly.GetType("FuncCreator").GetMethod("F");
- // получения информации от метода
- var a = method.CreateDelegate(method.GetType());
- //тут ошибка
- ReadKey();
- }
- }
Решение задачи: «System.ArgumentException: "Тип должен быть производным от Delegate."»
textual
Листинг программы
- System.Reflection.MethodInfo method = results.CompiledAssembly.GetType("FuncCreator").GetMethod("F");
- // получения информации от метода
- int n = (int)method.Invoke(null,null);
- Console.WriteLine( n);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д