Можно ли как-то получить из одного класса исходный код другого класса? - C#
Формулировка задачи:
Предположим есть два публичных класса. Один находится в одной части проекта, другой где-нибудь в другой части проекта. Мне для своих каких-то целей из второго класса нужно получить весь исходный код первого класса. Не свойство или метод, а прям исходный код. Есть ли в шарпе какая-нибудь стандартная функция, которая бы мне вернула его исходный код в виде строки или строкового массива? В JavaScript такая была, иногда выручала прям. Может как-то иначе можно добиться этого же результата?
Про обычное чтение cs-файла, в котором расположен данный класс можете не говорить. Я про это знаю, но это на крайний случай! Хотелось бы более изящным способом решить.
Решение задачи: «Можно ли как-то получить из одного класса исходный код другого класса?»
textual
Листинг программы
var sources = ClassBody; var provider = new CSharpCodeProvider(); var parameters = new CompilerParameters { GenerateInMemory = true }; parameters.ReferencedAssemblies.Add("System.dll"); CompilerResults results = provider.CompileAssemblyFromSource(parameters, sources); if (results.Errors.Count > 0) { string errors = string.Join(Environment.NewLine, results.Errors.Cast<CompilerError>().Select(x => x.ErrorText)); throw new ArgumentException(errors, "input"); } var cls = results.CompiledAssembly.GetType("MyClass"); var method = cls.GetMethod("Create", BindingFlags.Static | BindingFlags.Public); return method.Invoke(null, null);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д