protected override void WritePropertyInterfaceImplementations(PropertyDefinition property) { ICollection<ImplementedMember> implementedProperties = property.GetImplementedProperties(); if (property.IsExplicitImplementation()) { if (implementedProperties.Any()) { WriteImplementedMembers(implementedProperties); } } else { ICollection<ImplementedMember> notExplicitlyImplementedProperties = GetNotExplicitlyImplementedMembers(implementedProperties); if (notExplicitlyImplementedProperties.Any()) { WriteImplementedMembers(notExplicitlyImplementedProperties); } } }
protected override void WritePropertyDeclaration(PropertyDefinition property) { MethodDefinition moreVisibleMethod = property.GetMethod.GetMoreVisibleMethod(property.SetMethod); if (property.IsIndexer()) { WriteIndexerKeywords(); } if (this.ModuleContext.RenamedMembers.Contains(property.MetadataToken.ToUInt32())) { WriteComment(property.Name); WriteLine(); } if (!property.IsExplicitImplementation()) { WriteMethodVisibilityAndSpace(moreVisibleMethod); } if (!(property.IsVirtual() && !property.IsNewSlot())) { bool isIndexerProperty = property.IsIndexer(); if ((isIndexerProperty && IsIndexerPropertyHiding(property)) || (!isIndexerProperty && IsPropertyHiding(property))) { WriteKeyword(KeyWordWriter.Hiding); WriteSpace(); } } if (property.IsVirtual() && !property.DeclaringType.IsInterface) { if (WritePropertyKeywords(property)) { WriteSpace(); } } //covers the case of properties with only one of the get/set methods in VB WriteReadOnlyWriteOnlyProperty(property); if (property.IsStatic()) { WriteKeyword(KeyWordWriter.Static); WriteSpace(); } if (KeyWordWriter.Property != null) { WriteKeyword(KeyWordWriter.Property); WriteSpace(); } if (property.IsIndexer()) { if (WritePropertyAsIndexer(property)) { return; } } WritePropertyTypeAndNameWithArguments(property); WritePropertyInterfaceImplementations(property); }
protected override bool WritePropertyAsIndexer(PropertyDefinition property) { string propertyName = KeyWordWriter.This; if (property.IsExplicitImplementation()) { int lastDotIndex = property.Name.LastIndexOf("."); propertyName = property.Name.Replace(property.Name.Substring(lastDotIndex + 1), KeyWordWriter.This); } WriteTypeAndName(property.PropertyType, propertyName, property); Write(IndexLeftBracket); WritePropertyParameters(property); Write(IndexRightBracket); return true; }