Можно ли как-то получить из одного класса исходный код другого класса? - 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);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы