/// <inheritdoc /> protected override string GetParameterName(StaticParameterWrapper parameter) { if (parameter.Handle is CodeTypeRef) { return(null); } CodeParameter2 parameterHandle = (CodeParameter2)parameter.Handle; return(parameterHandle.Name); }
/// <inheritdoc /> protected override ParameterAttributes GetParameterAttributes(StaticParameterWrapper parameter) { if (parameter.Handle is CodeTypeRef) { return(ParameterAttributes.None); } CodeParameter2 parameterHandle = (CodeParameter2)parameter.Handle; vsCMParameterKind kind = parameterHandle.ParameterKind; ParameterAttributes flags = 0; ReflectorFlagsUtils.AddFlagIfTrue(ref flags, ParameterAttributes.HasDefault, parameterHandle.DefaultValue != null); ReflectorFlagsUtils.AddFlagIfTrue(ref flags, ParameterAttributes.In, (kind & vsCMParameterKind.vsCMParameterKindIn) != 0); ReflectorFlagsUtils.AddFlagIfTrue(ref flags, ParameterAttributes.Out, (kind & vsCMParameterKind.vsCMParameterKindOut) != 0); ReflectorFlagsUtils.AddFlagIfTrue(ref flags, ParameterAttributes.Optional, (kind & vsCMParameterKind.vsCMParameterKindOptional) != 0); return(flags); }
/// <inheritdoc /> protected override StaticTypeWrapper GetParameterType(StaticParameterWrapper parameter) { CodeTypeRef returnTypeHandle = parameter.Handle as CodeTypeRef; if (returnTypeHandle != null) { return(MakeType(returnTypeHandle)); } CodeParameter2 parameterHandle = (CodeParameter2)parameter.Handle; StaticTypeWrapper parameterType = MakeType(parameterHandle.Type); if ((parameterHandle.ParameterKind & (vsCMParameterKind.vsCMParameterKindRef | vsCMParameterKind.vsCMParameterKindOut)) != 0) { parameterType = parameterType.MakeByRefType(); } return(parameterType); }
/// <inheritdoc /> protected override int GetParameterPosition(StaticParameterWrapper parameter) { if (parameter.Handle is CodeTypeRef) { return(-1); } CodeParameter2 parameterHandle = (CodeParameter2)parameter.Handle; CodeElements codeElements = parameterHandle.Collection; for (int i = 0; i < codeElements.Count; i++) { if (codeElements.Item(i) == parameterHandle) { return(i); } } throw new InvalidOperationException("Could not obtain position of parameter."); }
/// <inheritdoc /> protected override IEnumerable <StaticAttributeWrapper> GetParameterCustomAttributes(StaticParameterWrapper parameter) { if (parameter.Handle is CodeTypeRef) { return(EmptyArray <StaticAttributeWrapper> .Instance); } CodeParameter2 parameterHandle = (CodeParameter2)parameter.Handle; return(WrapAttributes(parameterHandle.Attributes)); }