private static string PreencheValorPropriedade(
                ResolvedorPropriedadesParametros parametrosResolvedorPropriedades, out bool preenchimentoObrigatorio)
            {
                var valorPropriedadeQuePodeSerNulo =
                    parametrosResolvedorPropriedades.Propriedade.GetValue(parametrosResolvedorPropriedades.Objeto);
                var valorPropriedade = valorPropriedadeQuePodeSerNulo == null
                    ? string.Empty
                    : valorPropriedadeQuePodeSerNulo.ToString();

                preenchimentoObrigatorio = false;
                if (parametrosResolvedorPropriedades.ArgumentosConstrutorPropriedade.Count > 0)
                {
                    preenchimentoObrigatorio = Convert
                                               .ToBoolean(parametrosResolvedorPropriedades
                                                          .ArgumentosConstrutorPropriedade[1]
                                                          .Value
                                                          .ToString());
                }

                if (!preenchimentoObrigatorio || !string.IsNullOrWhiteSpace(valorPropriedade))
                {
                    return(valorPropriedade);
                }

                if (!ComportamentoAtual.NaoDispararExceptionPropriedadesObrigatoriasVazias)
                {
                    throw new ArgumentNullException(nameof(parametrosResolvedorPropriedades.Propriedade),
                                                    $"A propriedade \"{parametrosResolvedorPropriedades.Propriedade.Name}\" tem preenchimento obrigatório.");
                }

                return("");
            }
            private static string CriaLinhaTx2(
                CustomAttributeData atributoTx2Propriedade,
                ResolvedorPropriedadesParametros parametrosResolvedorPropriedades)
            {
                var argumentosConstrutorPropriedade = atributoTx2Propriedade?.ConstructorArguments;

                var nomeTx2 = CapturaNomeTx2(
                    new ResolvedorPropriedadesParametros(argumentosConstrutorPropriedade,
                                                         parametrosResolvedorPropriedades.Propriedade));

                var valorPropriedade = PreencheValorPropriedade(
                    new ResolvedorPropriedadesParametros(
                        parametrosResolvedorPropriedades.Objeto,
                        argumentosConstrutorPropriedade,
                        parametrosResolvedorPropriedades.Propriedade), out var preenchimentoObrigatorio);

                VerificaQuantidadeLimite(valorPropriedade,
                                         new ResolvedorPropriedadesParametros(argumentosConstrutorPropriedade,
                                                                              parametrosResolvedorPropriedades.Propriedade));

                if (ComportamentoAtual.NaoSerializarCamposNulosNaoObrigatorios && !preenchimentoObrigatorio && string.IsNullOrWhiteSpace(valorPropriedade))
                {
                    return(string.Empty);
                }

                return($"{nomeTx2}={valorPropriedade}\n");
            }
            private static void VerificaQuantidadeLimite(
                string valorPropriedade,
                ResolvedorPropriedadesParametros parametrosResolvedorPropriedades)
            {
                if (parametrosResolvedorPropriedades.ArgumentosConstrutorPropriedade.Count < 3)
                {
                    return;
                }

                var quantidadeLimite = Convert.ToInt32(
                    parametrosResolvedorPropriedades.ArgumentosConstrutorPropriedade[2].Value.ToString());

                if (ExceptionLimiteExcedido(valorPropriedade, quantidadeLimite))
                {
                    throw new ArgumentOutOfRangeException(nameof(parametrosResolvedorPropriedades.Propriedade),
                                                          valorPropriedade,
                                                          $"Quantidade de caracteres da propriedade \"{parametrosResolvedorPropriedades.Propriedade.Name}\" maior do que o permitido que é {quantidadeLimite}.");
                }
            }
Exemple #4
0
            private static string CriaLinhaTx2(
                CustomAttributeData atributoTx2Propriedade,
                ResolvedorPropriedadesParametros parametrosResolvedorPropriedades)
            {
                var argumentosConstrutorPropriedade = atributoTx2Propriedade?.ConstructorArguments;

                var nomeTx2 = CapturaNomeTx2(
                    new ResolvedorPropriedadesParametros(argumentosConstrutorPropriedade,
                                                         parametrosResolvedorPropriedades.Propriedade));

                var valorPropriedade = PreencheValorPropriedade(
                    new ResolvedorPropriedadesParametros(
                        parametrosResolvedorPropriedades.Objeto,
                        argumentosConstrutorPropriedade,
                        parametrosResolvedorPropriedades.Propriedade));

                VerificaQuantidadeLimite(valorPropriedade,
                                         new ResolvedorPropriedadesParametros(argumentosConstrutorPropriedade,
                                                                              parametrosResolvedorPropriedades.Propriedade));

                return($"{nomeTx2}={valorPropriedade}\n");
            }
            private static string CapturaNomeTx2(
                ResolvedorPropriedadesParametros parametrosResolvedorPropriedades)
            {
                if (parametrosResolvedorPropriedades.ArgumentosConstrutorPropriedade.Count == 0)
                {
                    return(parametrosResolvedorPropriedades.Propriedade.Name);
                }

                var nomeTx2 = parametrosResolvedorPropriedades.ArgumentosConstrutorPropriedade[0].Value.ToString();

                if (!string.IsNullOrWhiteSpace(nomeTx2))
                {
                    return(nomeTx2);
                }

                if (!ComportamentoAtual.NomeDaPropriedadeQuandoNomeCampoVazio)
                {
                    throw new ArgumentNullException(nameof(nomeTx2),
                                                    $"O nome correspondente da propriedade \"{parametrosResolvedorPropriedades.Propriedade.Name}\" não foi preenchido.");
                }

                return(parametrosResolvedorPropriedades.Propriedade.Name);
            }