通过反射检查方法内部是否使用了特定的扩展方法



我在徘徊,如果我在某个DLL中有这样的代码:

public class DemoClass
{
    public void TestAction(XMParams command)
    {
        var firstName = command.Parse<string>(Params.First, "First Name");
        var lastName = command.Parse<string>(Params.Second, "Last Name");
        var userData = new UserDataDto{
            FirstName = firstName,
            LastName = lastName
        }
        command.StoreValue(userData, "User Data");
    }
}

是否可以检测到使用命令.Parse的这些行,并提取这些数据:命令解析<类型>(索引描述

command.StoreValue(类型描述名称);

在这个列表中的对象看起来像这样:

public class InputParamObj
{
    public int Index {get;set;}
    public string Type {get;set;}
    public string Description {get;set;}
}
public class OutputObj
{
    public string Type {get;set;}
    public string Description {get;set;}
}
public class CommandData
{
    public List<InputParamObj> InputParams {get;set;}
    public OutputObj Output {get;set;}
}

注意,这段代码将始终处于已知的方法中,例如"TestAction"方法中。

您不想通过反射来做那种事情。使用MethodInfo.GetMethodBody(),您可以获得用于方法实现的二进制IL流,但祝您好运。

您需要解析代码。查看此项可以查看一个不错的解决方案列表。大多数都很好,这取决于你的实际需求。我个人会选择微软新推出的"编译器即服务"Roslyn,因为从我看来,它真的是一个很棒的api:功能强大,写得很好。但它现在可能不适合你的需求。

相关内容

  • 没有找到相关文章

最新更新