Skip to content

Instantly share code, notes, and snippets.

@jpolvora
Last active December 10, 2015 16:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jpolvora/4459534 to your computer and use it in GitHub Desktop.
Save jpolvora/4459534 to your computer and use it in GitHub Desktop.
/*
Exemplo de um C# Extension Method que verifica se qualquer IEnumerable<T> é nulo ou vazio (sem itens)
e retorna um IEnumerable<T> contendo no mínimo um item com o valor default
*/
public static class CSharpExtensions
{
public static IEnumerable<T> NotEmpty<T>(this IEnumerable<T> source, T defaultValue = default(T))
{
T[] array = null;
if (source != null)
array = source as T[] ?? source.ToArray();
if (array == null || array.Length == 0)
return new[] { defaultValue };
return array;
}
//... outros métodos omitidos
}
//Exemplo de uso:
//uma lista vazia de strings
var stringEnumerable = new List<string>();
//uma lista contendo uma string vazia
var stringList = stringEnumerable.NotEmpty(defaultValue: string.Empty).ToList();
Debug.Assert(stringList.Count > 0);
//uma lista vazia de inteiros
var intEnumerable = new List<int>();
//uma lista contendo 1 número inteiro
var intList = intEnumerable.NotEmpty(defaultValue: 1).ToList();
Debug.Assert(intList.Count > 0);
//uma lista vazia de clientes
var clientesEnumerable = new List<Cliente>();
//uma lista contendo um cliente
var clientesList = clientesEnumerable.NotEmpty(defaultValue: new Cliente()).ToList();
Debug.Assert(clientesList.Count > 0);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment