public void Write()

in src/AutoRest.CSharp/Mgmt/Generation/OperationSourceWriter.cs [41:128]


        public void Write()
        {
            using (_writer.Namespace($"{_opSource.Declaration.Namespace}"))
            {
                using (_writer.Scope($"{_opSource.Declaration.Accessibility} class {_opSource.Type:D} : {_opSource.Interface}"))
                {
                    if (_opSource.IsReturningResource)
                    {
                        _writer.WriteField(_opSource.ArmClientField);

                        if (_operationIdMappings is not null)
                        {
                            using (_writer.Scope($"private readonly {typeof(Dictionary<string, string>)} _idMappings = new {typeof(Dictionary<string, string>)}()", start: "\t\t{", end: "\t\t};"))
                            {
                                _writer.Line($"\t\t\t{{ \"subscriptionId\", \"Microsoft.Resources/subscriptions\" }},");
                                _writer.Line($"\t\t\t{{ \"resourceGroupName\", \"Microsoft.Resources/resourceGroups\" }},");
                                foreach (var mapping in _operationIdMappings)
                                {
                                    _writer.Line($"\t\t\t{{ \"{mapping.Key}\", \"{mapping.Value}\" }},");
                                }
                            }
                        }

                        _writer.Line();
                        using (_writer.WriteMethodDeclaration(_opSource.ArmClientCtor))
                        {
                            _writer.Line($"{_opSource.ArmClientField.Name} = {KnownParameters.ArmClient.Name};");
                        }
                    }

                    _writer.Line();
                    WriteCreateResult();

                    _writer.Line();
                    WriteCreateResultAsync();

                    if (_operationIdMappings is not null)
                    {
                        var resource = _opSource.Resource!;
                        var resourceType = resource.Type;
                        var dataType = resource.ResourceData.Type;
                        _writer.Line();
                        using (_writer.Scope($"private {dataType} ScrubId({dataType} data)"))
                        {
                            _writer.Line($"if (data.Id.ResourceType == {resourceType}.ResourceType)");
                            _writer.Line($"return data;");
                            _writer.Line();
                            _writer.Append($"var newId = {resourceType}.CreateResourceIdentifier(");
                            var createIdMethod = resource.CreateResourceIdentifierMethod.Signature;
                            foreach (var param in createIdMethod.Parameters)
                            {
                                _writer.Line();
                                _writer.Append($"\tGetName(\"{param.Name}\", data.Id),");
                            }
                            _writer.RemoveTrailingComma();
                            _writer.Line($");");
                            _writer.Line();
                            _writer.Line($"return new {dataType}(");
                            _writer.Line($"\tnewId,");
                            _writer.Line($"\tnewId.Name,");
                            _writer.Append($"\tnewId.ResourceType,");
                            foreach (var param in resource.ResourceData.SerializationConstructor.Signature.Parameters.Skip(3))
                            {
                                _writer.Line();
                                if (param.IsRawData)
                                {
                                    _writer.Append($"\tnull");
                                }
                                else
                                {
                                    _writer.Append($"\tdata.{param.Name.ToCleanName()},");
                                }
                            }
                            _writer.RemoveTrailingComma();
                            _writer.Line($");");
                        }

                        _writer.Line();
                        using (_writer.Scope($"private string GetName(string param, {typeof(ResourceIdentifier)} id)"))
                        {
                            _writer.Line($"while (id.ResourceType != _idMappings[param])");
                            _writer.Line($"id = id.Parent;");
                            _writer.Line($"return id.Name;");
                        }
                    }
                }
            }
        }