This class allows the inspection of the type and behavior of a method parameter. Because parameters can have custom attributes on them, the class implements ICustomAttributeProvider . Attributes returns the attributes defined on this parameter. If the parameter has a default, it is stored in DefaultValue . Retrieve the name , type, and member the parameter is from by inspecting Name , ParameterType , and Member . Position returns the ordinal position of this parameter. IsOptional returns true if the parameter is optional, and IsLcid indicates when the parameter is a locale identifier. A parameter is passed by reference if the IsByRef property of its ParameterType property is true and the IsOut property is false ( out parameters have IsByRef and IsOut set to true ). A parameter that has been marked as [In] has IsOut set to false and IsIn set to true . public class ParameterInfo : ICustomAttributeProvider { // Protected Constructors protected ParameterInfo ( ); // Protected Instance Fields protected ParameterAttributes AttrsImpl ; protected Type ClassImpl ; protected object DefaultValueImpl ; protected MemberInfo MemberImpl ; protected string NameImpl ; protected int PositionImpl ; // Public Instance Properties public virtual ParameterAttributes Attributes {get; } public virtual object DefaultValue {get; } public bool IsIn {get; } public bool IsLcid {get; } public bool IsOptional {get; } public bool IsOut {get; } public bool IsRetval {get; } public virtual MemberInfo Member {get; } public virtual string Name {get; } public virtual Type ParameterType {get; } public virtual int Position {get; } // Public Instance Methods public virtual object[ ] GetCustomAttributes (bool inherit ); // implements ICustomAttributeProvider public virtual object[ ] GetCustomAttributes (Type attributeType , bool inherit ) // implements ICustomAttributeProvider public virtual bool IsDefined (Type attributeType , bool inherit ); // implements ICustomAttributeProvider } Returned ByMethodBase.GetParameters( ) , PropertyInfo.GetIndexParameters( ) Passed ToSystem.Attribute.{GetCustomAttribute( ) , GetCustomAttributes( ) , IsDefined( )} |