protected override string GetPropertyDeclaration(PropertyDefinition property) { if (DocUtils.IsExplicitlyImplemented(property)) { return(DocUtils.GetPropertyName(property, NestedTypeSeparator)); } return($"{GetName(property.DeclaringType)}.{property.Name}"); }
protected override string GetPropertyDeclaration(PropertyDefinition property) { string getVisible = null; if (DocUtils.IsAvailablePropertyMethod(property.GetMethod)) { getVisible = AppendVisibility(new StringBuilder(), property.GetMethod).ToString(); } string setVisible = null; if (DocUtils.IsAvailablePropertyMethod(property.SetMethod)) { setVisible = AppendVisibility(new StringBuilder(), property.SetMethod).ToString(); } if (setVisible == null && getVisible == null) { return(null); } StringBuilder buf = new StringBuilder(); IEnumerable <MemberReference> defs = property.DeclaringType.GetDefaultMembers(); bool indexer = false; foreach (MemberReference mi in defs) { if (mi == property) { indexer = true; break; } } if (indexer) { buf.Append("Default "); } if (getVisible != null && (setVisible == null || (setVisible != null && getVisible == setVisible))) { buf.Append(getVisible); } else if (setVisible != null && getVisible == null) { buf.Append(setVisible); } else { buf.Append("Public"); } // Pick an accessor to use for static/virtual/override/etc. checks. var method = property.SetMethod; if (method == null) { method = property.GetMethod; } string modifiers = String.Empty; if (method.IsStatic && !IsModule(method.DeclaringType)) { modifiers += " Shared"; } if (method.IsVirtual && !method.IsAbstract) { if ((method.Attributes & MethodAttributes.NewSlot) != 0) { modifiers += " Overridable"; } else { modifiers += " Overrides"; } } TypeDefinition declDef = (TypeDefinition)method.DeclaringType; if (method.IsAbstract && !declDef.IsInterface) { modifiers += " MustOverride"; } if (method.IsFinal) { modifiers += " NotOverridable"; } if (modifiers == " MustOverride NotOverridable") { modifiers = ""; } if (modifiers == " Overridable NotOverridable") { modifiers = ""; } buf.Append(modifiers).Append(' '); if (getVisible != null && setVisible == null) { buf.Append("ReadOnly "); } buf.Append("Property "); buf.Append(property.Name.Split('.').Last()); if (property.Parameters.Count != 0) { AppendParameters(buf, method, property.Parameters, '(', ')'); } buf.Append(" As "); buf.Append(GetTypeName(property.PropertyType, new DynamicParserContext(property))); if (DocUtils.IsExplicitlyImplemented(property.GetMethod)) { TypeReference iface; MethodReference ifaceMethod; DocUtils.GetInfoForExplicitlyImplementedMethod(method, out iface, out ifaceMethod); buf.Append(" Implements ") .Append(new VBMemberFormatter(this.TypeMap).GetName(iface)) .Append('.') .Append(DocUtils.GetPropertyName(property, NestedTypeSeparator).Split('.').Last()); } return(buf.ToString()); }
protected override string GetPropertyDeclaration(PropertyDefinition property) { MethodDefinition method; string get_visible = null; if ((method = property.GetMethod) != null && (DocUtils.IsExplicitlyImplemented(method) || (!method.IsPrivate && !method.IsAssembly && !method.IsFamilyAndAssembly))) { get_visible = AppendVisibility(new StringBuilder(), method).ToString(); } string set_visible = null; if ((method = property.SetMethod) != null && (DocUtils.IsExplicitlyImplemented(method) || (!method.IsPrivate && !method.IsAssembly && !method.IsFamilyAndAssembly))) { set_visible = AppendVisibility(new StringBuilder(), method).ToString(); } if ((set_visible == null) && (get_visible == null)) { return(null); } string visibility; StringBuilder buf = new StringBuilder(); if (get_visible != null && (set_visible == null || (set_visible != null && get_visible == set_visible))) { buf.Append(visibility = get_visible); } else if (set_visible != null && get_visible == null) { buf.Append(visibility = set_visible); } else { buf.Append(visibility = "public"); } // Pick an accessor to use for static/virtual/override/etc. checks. method = property.SetMethod; if (method == null) { method = property.GetMethod; } string modifiers = String.Empty; if (method.IsStatic) { modifiers += " static"; } if (method.IsVirtual && !method.IsAbstract) { if ((method.Attributes & MethodAttributes.NewSlot) != 0) { modifiers += " virtual"; } else { modifiers += " override"; } } TypeDefinition declDef = (TypeDefinition)method.DeclaringType; if (method.IsAbstract && !declDef.IsInterface) { modifiers += " abstract"; } if (method.IsFinal) { modifiers += " sealed"; } if (modifiers == " virtual sealed") { modifiers = ""; } buf.Append(modifiers).Append(' '); buf.Append(GetTypeName(property.PropertyType, new DynamicParserContext(property))).Append(' '); IEnumerable <MemberReference> defs = property.DeclaringType.GetDefaultMembers(); string name = property.Name; foreach (MemberReference mi in defs) { if (mi == property) { name = "this"; break; } } buf.Append(name == "this" ? name : DocUtils.GetPropertyName(property, NestedTypeSeparator)); if (property.Parameters.Count != 0) { AppendParameters(buf, method, property.Parameters, '[', ']'); } buf.Append(" {"); if (get_visible != null) { if (get_visible != visibility) { buf.Append(' ').Append(get_visible); } buf.Append(" get;"); } if (set_visible != null) { if (set_visible != visibility) { buf.Append(' ').Append(set_visible); } buf.Append(" set;"); } buf.Append(" }"); return(buf[0] != ' ' ? buf.ToString() : buf.ToString(1, buf.Length - 1)); }
protected override string GetPropertyDeclaration(PropertyDefinition property) { string getVisible = null; if (DocUtils.IsAvailablePropertyMethod(property.GetMethod)) { getVisible = AppendVisibility(new StringBuilder(), property.GetMethod)?.ToString(); } string setVisible = null; if (DocUtils.IsAvailablePropertyMethod(property.SetMethod)) { setVisible = AppendVisibility(new StringBuilder(), property.SetMethod)?.ToString(); } if (setVisible == null && getVisible == null) { return(null); } bool isField = GetFSharpFlags(property.CustomAttributes).Any(i => i == SourceConstructFlags.Field); StringBuilder buf = new StringBuilder(); if (IsRecord(property.DeclaringType)) { AppendRecordParameter(buf, property); return(buf.ToString()); } if (IsModule(property.DeclaringType)) { buf.Append($"{GetName(property.DeclaringType)}."); } else { if (isField) { buf.Append("val "); } else { buf.Append("member this."); } } buf.Append(DocUtils.GetPropertyName(property, NestedTypeSeparator)); if (property.Parameters.Count != 0) { buf.Append("("); AppendParameters(buf, property.GetMethod ?? property.SetMethod, property.Parameters); buf.Append(")"); } buf.Append(" : "); buf.Append(GetTypeName(property.PropertyType)); if (getVisible != null && setVisible != null) { buf.Append(" with get, set"); } return(buf.ToString()); }