NDepend的; get方法的参数

时间:2012-10-18 16:32:18

标签: ndepend

如何使用CQLINQ获取当前方法的输入参数集合?有任何像“参数”或“参数”这样的集合只有“NbParamenter”,它不适合我的目的。

1 个答案:

答案 0 :(得分:3)

事实上,CQLinq还没有这个功能。但是,在许多情况下,由于ICodeElement.Name的属性IMember.FullNameIMethod包含参数类型名称的逗号分隔列表,因此您可以进行补偿。例如,这里是方法的FullName

System.Windows.Forms.Control.BeginInvoke(Delegate,Object[])

这是Name

BeginInvoke(Delegate,Object[])

以下是一个CQLinq规则,它利用参数类型名称来匹配事件处理程序方法:

// <Name>Event handler methods should be declared private</Name>
warnif count > 0
from m in Application.Methods where 
  !m.IsPrivate &&

   // A method is considered as event handler if...
   m.NbParameters == 2 &&            // ...it has two parameters..
   m.Name.Contains("Object") &&    // ...of types Object...
   m.Name.Contains("EventArgs") && // ...and EventArgs

   // Discard special cases
  !m.ParentType.IsDelegate &&
  !m.IsGeneratedByCompiler

select new { m,m.Visibility }
// This rule implementation relies on the facts that:
// -> A method name contains the type of its parameters.
// -> All EventArgs derived types have the suffix "EventArgs".