Código aberto em C#: melhores repositórios GitHub para desenvolvedores .NET
\n\nQuando falamos de open source, a primeira coisa que vem à mente é Python, JavaScript ou Go. Mas C#? Muitos acreditam erroneamente que o ecossistema .NET é fechado e proprietário. Na verdade, o código aberto em C# está prosperando, e o GitHub está repleto de projetos incríveis. De frameworks poderosos a utilitários elegantes, há de tudo para inspirar até o desenvolvedor mais experiente.
\n\nNeste artigo, não vamos apenas listar links. Vamos analisar os melhores repositórios GitHub em C# com exemplos reais de código, mostrar como usá-los e explicar por que cada um merece sua atenção. Se você programa em C# ou está começando a mergulhar no mundo .NET, este conteúdo é para você.
\n\nPor que estudar projetos open source em C#?
\n\nTrabalhar com código de terceiros é a melhor maneira de aprimorar suas habilidades. Você vê como problemas reais são resolvidos, quais padrões são usados e como a performance é otimizada. Além disso, os repositórios C# no GitHub são uma mina de soluções prontas. Por que reinventar a roda se você pode usar uma biblioteca testada?
\n\nVamos mergulhar nos melhores projetos. Selecionei 7 repositórios que realmente mudam as regras do jogo.
\n\n1. Humanizer — transformando código em linguagem humana
\n\nVocê já escreveu algo como: DateTime.Now.AddDays(-3).ToShortDateString() e pensou: "Como posso deixar isso mais bonito?" O Humanizer é uma biblioteca que faz exatamente isso. Ela converte números, datas, enumerações e até bytes em strings legíveis.
Veja como fica no código:
\n\nusing Humanizer;\n\nint number = 1234567;\nConsole.WriteLine(number.ToWords()); // um milhão duzentos e trinta e quatro mil quinhentos e sessenta e sete\n\nDateTime birthday = new DateTime(1990, 5, 15);\nConsole.WriteLine(birthday.Humanize()); // 34 anos atrás\n\nTimeSpan time = TimeSpan.FromDays(3).Add(TimeSpan.FromHours(5));\nConsole.WriteLine(time.Humanize()); // 3 dias 5 horas\n\nEste projeto open source em C# é usado em produção por milhares de empresas. É perfeito para logging, interfaces e relatórios. Repositório: github.com/Humanizr/Humanizer.
2. FluentValidation — regras de validação elegantes
\n\nA validação de dados é uma dor de cabeça para qualquer desenvolvedor backend. O FluentValidation resolve esse problema de forma elegante: você descreve as regras como uma cadeia fluente, em vez de espalhar verificações por todo o código.
\n\nExemplo:
\n\npublic class UserValidator : AbstractValidator<User>\n{\n public UserValidator()\n {\n RuleFor(user => user.Name)\n .NotEmpty().WithMessage("Nome é obrigatório")\n .Length(2, 50).WithMessage("O nome deve ter entre 2 e 50 caracteres");\n\n RuleFor(user => user.Email)\n .EmailAddress().WithMessage("Email inválido");\n\n RuleFor(user => user.Age)\n .InclusiveBetween(18, 120).WithMessage("A idade deve estar entre 18 e 120 anos");\n }\n}\n\n// Uso:\nvar validator = new UserValidator();\nvar result = validator.Validate(new User { Name = "A", Email = "test", Age = 15 });\n\nif (!result.IsValid)\n{\n foreach (var error in result.Errors)\n Console.WriteLine(error.ErrorMessage);\n}\n\nEste é um dos repositórios C# no GitHub mais populares, com mais de 10.000 estrelas. Ele se integra ao ASP.NET Core e torna o código mais limpo.
\n\n3. Polly — resiliência a erros sem dor
\n\nSeu aplicativo falha quando o banco de dados está indisponível? O Polly é uma biblioteca para tratamento de falhas com tentativas de repetição, timeouts e circuit breaker. Ela salva microsserviços de falhas em cascata.
\n\nExemplo real:
\n\nusing Polly;\n\nvar retryPolicy = Policy\n .Handle<HttpRequestException>()\n .WaitAndRetryAsync(3, r