static private void AppendConstructorInfo(ConstructorInfo constructor, StringBuilder sb) { sb.Append(".method"); foreach (var attribute in constructor.GetCustomAttributesData()) { sb.Append(" "); AppendCustomAttributeData(attribute, sb); } sb.Append(" "); AppendMethodAttributes(sb, constructor.Attributes); sb.Append(" "); sb.Append("void "); sb.Append(constructor.Name); if (constructor.IsGenericMethod) { sb.Append("<"); foreach (var typeParameter in constructor.GetGenericArguments()) { AppendType(typeParameter, sb, true); AppendComma(sb); } RemoveTrailingComma(sb); sb.Append(">"); } sb.Append("("); foreach (var parameter in constructor.GetParameters()) { AppendParameterInfo(parameter, sb); AppendComma(sb); } RemoveTrailingComma(sb); sb.Append(")"); var implFlags = constructor.GetMethodImplementationFlags(); if (implFlags.HasFlag(MethodImplAttributes.IL)) sb.Append(" cil"); if (implFlags.HasFlag(MethodImplAttributes.ForwardRef)) sb.Append(" forwardref"); if (implFlags.HasFlag(MethodImplAttributes.InternalCall)) sb.Append(" internalcall"); if (implFlags.HasFlag(MethodImplAttributes.Managed)) sb.Append(" managed"); if (implFlags.HasFlag(MethodImplAttributes.Native)) sb.Append(" native"); if (implFlags.HasFlag(MethodImplAttributes.NoInlining)) sb.Append(" noinlining"); if (implFlags.HasFlag(MethodImplAttributes.NoOptimization)) sb.Append(" nooptimization"); if (implFlags.HasFlag(MethodImplAttributes.OPTIL)) sb.Append(" optil"); if (implFlags.HasFlag(MethodImplAttributes.PreserveSig)) sb.Append(" preservesig"); if (implFlags.HasFlag(MethodImplAttributes.Runtime)) sb.Append(" runtime"); if (implFlags.HasFlag(MethodImplAttributes.Synchronized)) sb.Append(" synchronized"); if (implFlags.HasFlag(MethodImplAttributes.Unmanaged)) sb.Append(" unmanaged"); }
public void EnrichConstructor(IProcessingContext context, ConstructorInfo ctor) { GenerateAttributeElements(context, ctor.GetCustomAttributesData()); }