我该如何使用CQLINQ来获取当前方法的输入参数集合?是否有像“Arguments”或“Parameters”这样的集合,而不是“NbParamenter”这样的集合,因为它不适合我的目的。
我该如何使用CQLINQ来获取当前方法的输入参数集合?是否有像“Arguments”或“Parameters”这样的集合,而不是“NbParamenter”这样的集合,因为它不适合我的目的。
实际上,CQLinq目前还没有这个功能。但是,在许多情况下,由于属性ICodeElement.Name和IMember.FullName(对于IMethod)包含参数类型名称的逗号分隔列表,您可以进行补偿。例如,这里是一个方法的FullName
:
System.Windows.Forms.Control.BeginInvoke(Delegate,Object[])
这里是它的名称
:
BeginInvoke(Delegate,Object[])
// <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".
[CallerMemberName]
。正如tjrobinson所提到的,上述代码似乎对我们的情况没有帮助。 - user585968