public static void AsTextPropertyInfo(CodeWriter writer, PropertyInfo propertyInfo, RenderFlags flags) { RenderFlags passFlags = flags & ~RenderFlags.Description; if (!flags.HasFlag(RenderFlags.NoPreAnnotations)) { Attribute.AsTextAttributes(writer, propertyInfo); } writer.Write(ModifiersHelpers.AsString(GetPropertyModifiers(propertyInfo))); Type propertyType = propertyInfo.PropertyType; TypeRefBase.AsTextType(writer, propertyType, passFlags); writer.Write(" "); TypeRefBase.AsTextType(writer, propertyInfo.DeclaringType, passFlags); Dot.AsTextDot(writer); if (PropertyInfoUtil.IsIndexed(propertyInfo)) { // Display the actual name instead of 'this' - it will usually be 'Item', but not always, // plus it might have a prefix (if it's an explicit interface implementation). writer.Write(propertyInfo.Name + IndexerDecl.ParseTokenStart); MethodRef.AsTextParameters(writer, propertyInfo.GetIndexParameters(), flags); writer.Write(IndexerDecl.ParseTokenEnd); } else { writer.Write(propertyInfo.Name); } }
public override void AsText(CodeWriter writer, RenderFlags flags) { if (flags.HasFlag(RenderFlags.Description)) { TypeRefBase.AsTextType(writer, GetType(), RenderFlags.None); } else { base.AsText(writer, flags); } }
public static void AsTextEventInfo(CodeWriter writer, EventInfo eventInfo, RenderFlags flags) { RenderFlags passFlags = flags & ~RenderFlags.Description; if (!flags.HasFlag(RenderFlags.NoPreAnnotations)) { Attribute.AsTextAttributes(writer, eventInfo); } writer.Write(ModifiersHelpers.AsString(GetEventModifiers(eventInfo))); TypeRefBase.AsTextType(writer, eventInfo.EventHandlerType, passFlags); writer.Write(" "); TypeRefBase.AsTextType(writer, eventInfo.DeclaringType, passFlags); writer.Write(Dot.ParseToken + eventInfo.Name); }
public static void AsTextFieldInfo(CodeWriter writer, FieldInfo fieldInfo, RenderFlags flags) { RenderFlags passFlags = flags & ~RenderFlags.Description; // Skip all details for enum members, including the declaring type since it will always be on the left of the dot if (!(fieldInfo.IsLiteral && fieldInfo.FieldType.IsEnum)) { if (!flags.HasFlag(RenderFlags.NoPreAnnotations)) { Attribute.AsTextAttributes(writer, fieldInfo); } writer.Write(ModifiersHelpers.AsString(GetFieldModifiers(fieldInfo))); Type fieldType = fieldInfo.FieldType; TypeRefBase.AsTextType(writer, fieldType, passFlags); writer.Write(" "); TypeRefBase.AsTextType(writer, fieldInfo.DeclaringType, passFlags); Dot.AsTextDot(writer); } writer.Write(fieldInfo.Name); }
public static void AsTextParameterInfo(CodeWriter writer, ParameterInfo parameterInfo, RenderFlags flags) { RenderFlags passFlags = flags & ~RenderFlags.Description; Attribute.AsTextAttributes(writer, parameterInfo); ParameterModifier modifier = GetParameterModifier(parameterInfo); if (modifier != ParameterModifier.None) { writer.Write(ParameterDecl.ParameterModifierToString(modifier) + " "); } Type parameterType = parameterInfo.ParameterType; if (parameterType.IsByRef) { // Dereference (remove the trailing '&') if it's a reference type parameterType = parameterType.GetElementType(); } TypeRefBase.AsTextType(writer, parameterType, passFlags); writer.Write(" " + parameterInfo.Name); }
protected static void AsTextDescription(CodeWriter writer, MemberInfo memberInfo) { const RenderFlags flags = RenderFlags.ShowParentTypes | RenderFlags.NoPreAnnotations; switch (memberInfo.MemberType) { case MemberTypes.TypeInfo: case MemberTypes.NestedType: TypeRefBase.AsTextType(writer, (Type)memberInfo, flags | RenderFlags.Description); break; case MemberTypes.Constructor: ConstructorRef.AsTextConstructorInfo(writer, (ConstructorInfo)memberInfo, flags); break; case MemberTypes.Method: MethodRef.AsTextMethodInfo(writer, (MethodInfo)memberInfo, flags); break; case MemberTypes.Property: PropertyRef.AsTextPropertyInfo(writer, (PropertyInfo)memberInfo, flags); break; case MemberTypes.Field: FieldRef.AsTextFieldInfo(writer, (FieldInfo)memberInfo, flags); break; case MemberTypes.Event: EventRef.AsTextEventInfo(writer, (EventInfo)memberInfo, flags); break; default: writer.Write(memberInfo.ToString()); break; } }