如何使用 CQLINQ 获取当前方法的输入参数集合?有任何集合,如“参数”或“参数”,只有“NbParamenter”,不适合我的目的。
问问题
695 次
1 回答
3
事实上,CQLinq 还没有这个功能。但是,在许多情况下,由于 IMethod 的属性ICodeElement.Name和IMember.FullName包含以逗号分隔的参数类型名称列表,因此您可以弥补这一点。例如这里是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".
于 2012-10-19T07:29:44.830 回答