private static void WriteDictionaryExtensions(DataClassWriter writer, Property property) { var propertyInstance = property.Name.ToInstance(); var(keyType, valueType) = property.GetDictionaryKeyValueTypes(); var propertySingular = property.Name.ToSingular(); var propertySingularInstance = property.Name.ToSingular().ToInstance(); var keyInstance = $"{propertySingularInstance}Key"; var valueInstance = $"{propertySingularInstance}Value"; var propertyAccess = $"toolSettings.{property.Name}Internal"; writer .WriteSummaryExtension($"Sets {property.GetCrefTag()} to a new dictionary", property) .WriteMethod($"Set{property.Name}", $"IDictionary<{keyType}, {valueType}> {propertyInstance}", $"{propertyAccess} = {propertyInstance}.ToDictionary(x => x.Key, x => x.Value, {property.GetKeyComparer()});") .WriteSummaryExtension($"Clears {property.GetCrefTag()}", property) .WriteMethod($"Clear{property.Name}", $"{propertyAccess}.Clear();") .WriteSummaryExtension($"Adds a new key-value-pair {property.GetCrefTag()}", property) .WriteMethod($"Add{propertySingular}", new[] { $"{keyType} {keyInstance}", $"{valueType} {valueInstance}" }, $"{propertyAccess}.Add({keyInstance}, {valueInstance});") .WriteSummaryExtension($"Removes a key-value-pair from {property.GetCrefTag()}", property) .WriteMethod($"Remove{propertySingular}", $"{keyType} {keyInstance}", $"{propertyAccess}.Remove({keyInstance});") .WriteSummaryExtension($"Sets a key-value-pair in {property.GetCrefTag()}", property) .WriteMethod($"Set{propertySingular}", new[] { $"{keyType} {keyInstance}", $"{valueType} {valueInstance}" }, $"{propertyAccess}[{keyInstance}] = {valueInstance};"); writer.ForEach(property.Delegates, x => WriteDictionaryDelegateExtensions(writer, property, x)); }