public OptionalAttributeInfo(DmdParameterInfo parameter) { if (parameter.IsOptional) { var caType = parameter.Member.AppDomain.GetWellKnownType(DmdWellKnownType.System_Runtime_InteropServices_OptionalAttribute, isOptional: true); ctor = caType?.GetConstructor(Array.Empty <DmdType>()); Debug.Assert((object)caType == null || (object)ctor != null); } else { ctor = null; } }
/// <summary> /// Compares two method parameters /// </summary> /// <param name="a">First method parameter</param> /// <param name="b">Second method parameter</param> /// <returns></returns> public bool Equals(DmdParameterInfo a, DmdParameterInfo b) { if ((object)a == b) { return(true); } if ((object)a == null || (object)b == null) { return(false); } return(a.Position == b.Position && Equals(a.ParameterType, b.ParameterType) && (!CompareDeclaringType || Equals(a.Member, b.Member))); }
/// <summary> /// Gets the hash code of a method parameter /// </summary> /// <param name="a">Method parameter</param> /// <returns></returns> public int GetHashCode(DmdParameterInfo a) { if ((object)a == null) { return(0); } int hc = a.Position; hc ^= GetHashCode(a.ParameterType); if (CompareDeclaringType) { hc ^= GetHashCode(a.Member); } return(hc); }
void Write(DmdParameterInfo parameter) { FormatTypeName(parameter.ParameterType, GetTypeFlags(true) | TypeFlags.FnPtrIsIntPtr); writer.Append(' '); writer.Append(parameter.Name); }
string FormatCore(DmdParameterInfo parameter) { Write(parameter); return(writer.ToString()); }
public static string Format(DmdParameterInfo parameter, bool serializable = false) { using (var formatter = new DmdMemberFormatter(serializable ? GlobalFlags.Serializable : GlobalFlags.None)) return(formatter.FormatCore(parameter)); }
public MarshalAsAttributeInfo(DmdParameterInfo parameter, DmdMarshalType marshalType) => ctor = Initialize(parameter.Member.AppDomain, marshalType);