在Mono.Cecil中,ParameterDefinition
参数的out
将其属性svn cleanup . --remove-unversioned
设置为IsOut
。
答案 0 :(得分:3)
虽然ParameterDefinition
不包含IsRef
或IsParams
,但很容易从其他两个属性中确定。
当参数包含ref
修饰符时,ParameterDefinition.ParameterType.IsByReference
的值为true
。否则,它是false
,即使实际参数是引用类型。
至于params
,CustomAttributes
集合包含与System.ParamArrayAttribute
对应的元素。
以下代码说明了如何确定四种状态:
using System;
using System.Linq;
using Mono.Cecil;
...
if (definition.IsOut)
{
// There is an `out` modifier.
}
else if (definition.ParameterType.IsByReference)
{
// There is a `ref` modifier.
}
else if (definition.CustomAttributes.Any(attribute =>
attribute.AttributeType.FullName == typeof(ParamArrayAttribute).FullName))
{
// There is a `params` modifier.
}
else
{
// There are no modifiers.
}