protected virtual CustomAttribute GetOutAttribute(ParameterDefinition parameter) { if (parameter.IsOutParameter()) { return(null); } if (parameter == null || !parameter.IsOut) { return(null); } //ModuleDefinition paramDeclaringModule = parameter.Method.ReturnType.Module; //IMetadataScope referencedCorlib = paramDeclaringModule.TypeSystem.Corlib; ///// The type reference is created this way in order to avoid resolving it. ///// This will help the program print valid code, even in cases when the targeted corlib cannot be found (i.e. decompiling .NET 1.1) ///// The reference to the parameterless constructor is created for the same reason. //TypeReference outAttributeTypeReference = new TypeReference("System.Runtime.InteropServices", "OutAttribute", paramDeclaringModule, referencedCorlib); //if (outAttributeTypeReference == null) //{ // return null; //} //MethodReference emptyCtor = new MethodReference(".ctor", paramDeclaringModule.TypeSystem.Void, outAttributeTypeReference); //return new CustomAttribute(emptyCtor); return(GetInOrOutAttribute(parameter, false)); }
protected override Mono.Cecil.CustomAttribute GetOutAttribute(ParameterDefinition parameter) { if (parameter.IsOutParameter()) { return(GetInOrOutAttribute(parameter, false)); } return(base.GetOutAttribute(parameter)); }
protected virtual CustomAttribute GetOutAttribute(ParameterDefinition parameter) { if (parameter.IsOutParameter()) { return(null); } if (parameter == null || !parameter.get_IsOut()) { return(null); } return(this.GetInOrOutAttribute(parameter, false)); }