gpt4 book ai didi

c# - 从 .cs 文件中获取特定方法的源代码(在运行时)

转载 作者:太空狗 更新时间:2023-10-29 22:13:54 27 4
gpt4 key购买 nike

1 - 我在光盘上有这个文件内容(cs文件,未编译):

    namespace Test
{
using System;
public class TestClass
{
public string SomeTestMethod(){
return "test here";
}
}
}

如何在运行时获取变量的方法:

public string SomeTestMethod(){
return "test here";
}

例如:SourceCodeParser.GetMothod("文件路径","SomeTestMethod");

2 - 访问成员的内容是否可能?

   public string SomeMember {
get {
return "test here";
}
}

最佳答案

Roslyn是你需要的。您可以使用 nuget 轻松安装它.这是获取方法主体的工作代码:

string GetMethod(string filename, string methodName)
{
var syntaxTree = SyntaxTree.ParseFile(filename);
var root = syntaxTree.GetRoot();
var method = root.DescendantNodes()
.OfType<MethodDeclarationSyntax>()
.Where(md => md.Identifier.ValueText.Equals(methodName))
.FirstOrDefault();
return method.ToString();
}

获取属性主体的getter代码:

string GetPropertyGetter(string filename, string propertyName)
{
var syntaxTree = SyntaxTree.ParseFile(filename);
var root = syntaxTree.GetRoot();
var property = root.DescendantNodes()
.OfType<PropertyDeclarationSyntax>()
.Where(md => md.Identifier.ValueText.Equals(propertyName))
.FirstOrDefault();
var getter = property.AccessorList.Accessors.First(a => a.Kind == SyntaxKind.GetAccessorDeclaration);
return getter.ToString();
}

关于c# - 从 .cs 文件中获取特定方法的源代码(在运行时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20338068/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com