0
在Mono.Cecil中,out
參數的ParameterDefinition
的屬性IsOut
設置爲true
。我如何知道參數使用ref或params修飾符?
ref
和params
?如何從ParameterDefinition
確定其中一個修飾符用於方法參數?
在Mono.Cecil中,out
參數的ParameterDefinition
的屬性IsOut
設置爲true
。我如何知道參數使用ref或params修飾符?
ref
和params
?如何從ParameterDefinition
確定其中一個修飾符用於方法參數?
雖然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.
}