我试图从ObjectCreationExpressionSyntax
元素中获取类型和构造函数信息。
我首先需要评估创建的实例是ArgumentException
还是从中派生的类。然后,我需要获得正在使用的ConstructorInfo
(System.Reflection)。
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeAction(c =>
{
var local = c.Node as ObjectCreationExpressionSyntax;
if (local == null)
return;
ArgumentSyntax paramNameArgument;
bool conditionsAreMet;
// the code that's required to get both the Type and ConstructorInfo instances would go here
if (conditionsAreMet)
{
c.ReportDiagnostic(Diagnostic.Create(Rule, paramNameArgument.GetLocation()));
}
}, SyntaxKind.ObjectCreationExpression);
}
ObjectCreationExpressionSyntax
有一个Type
属性,我很确定这将是起点。但是,我不太明白我该如何从中提取任何东西。
非常感谢任何指导。
更新
这里有两个代码示例我希望分析器进入:
示例1
public void MyMethod(string myParam)
{
if (myParam == null)
throw new ArgumentNullException("myParam"); // <--- analyzer should step in here
// ...
}
示例2
public void MyOtherMethod(int myParam)
{
if (myParam > 10)
throw new ArgumentOutOfRangeException("myParam"); // <--- analyzer should step in here
// ...
}