void AnalyzePropertyPathProperty(PropertyPathPartUpdater part) { // This is a property reference. This may be directly the name of a property or a reference by // with the type to the property // Simple Property: "TestProperty" // Property with Type: "(local:DataClass.TestProperty)" var typeName = part.GetTypeName(); var propertyName = part.GetPropertyName(); if (!string.IsNullOrWhiteSpace(typeName)) { var sig = ResolveType(typeName, out var prefix); if (sig != null && context.Modules.Contains((ModuleDefMD)sig.ToBasicTypeDefOrRef().ResolveTypeDefThrow().Module)) { var reference = new BAMLPathTypeReference(xmlnsCtx, sig, part); AddTypeSigReference(sig, reference); return; } } // Reaching this point means that the type reference was either not present or failed to // resolve. In this case every property with the matching name will be flagged so it does not // get renamed. if (properties.TryGetValue(propertyName, out var candidates)) { foreach (var property in candidates) { service.SetCanRename(property, false); } } }
void AnalyzePropertyPathIndexer(PropertyPathPartUpdater part) { foreach (var indexerArg in part.ParamList) { if (!string.IsNullOrWhiteSpace(indexerArg.ParenString)) { var sig = ResolveType(indexerArg.ParenString, out var prefix); if (sig != null && context.Modules.Contains((ModuleDefMD)sig.ToBasicTypeDefOrRef().ResolveTypeDefThrow().Module)) { var reference = new BAMLPathTypeReference(xmlnsCtx, sig, indexerArg); AddTypeSigReference(sig, reference); break; } } } }