我在徘徊,如果我在某个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:功能强大,写得很好。但它现在可能不适合你的需求。