Articles of extension methods

É possível criar um método de extensão para formatar uma string?

a questão é muito simples. Como podemos formatar as seqüências de caracteres em c #? deste jeito: string.Format(“string goes here with placeholders like {0} {1}”, firstName, lastName); Agora, é possível criar um método de extensão para fazer isso dessa maneira? “string goes here {0} {1}”.Format(firstName, lastName); Isso é tudo.

Precedência do método de extensão C #

Estou um pouco confuso sobre como funcionam os methods de extensão. Se eu estiver lendo isso corretamente http://msdn.microsoft.com/en-us/library/bb383977.aspx e isso Se um método de extensão tiver a mesma assinatura de um método na class sealed, qual é a precedência de chamada? . Então, o seguinte deve escrever “Instance”, mas em vez disso, ele escreve “Extension […]

Pode haver methods de extensão privados?

Digamos que eu tenha necessidade de um método simples de ajuda privada e, intuitivamente, no código, isso faria sentido como um método de extensão. Existe alguma maneira de encapsular esse auxiliar para a única class que realmente precisa usá-lo? Por exemplo, eu tento isso: class Program { static void Main(string[] args) { var value = […]

Você pode adicionar methods de extensão que você chama como methods estáticos?

Segundo a Microsoft, “methods de extensão são um tipo especial de método estático, mas são chamados como se fossem methods de instância no tipo estendido”. Existe uma maneira de adicionar um método de extensão chamado como se fosse um método estático? Ou fazer outra coisa que tenha o mesmo efeito? Edit: Por que quero dizer […]

Usando extensões: pesando os prós e contras

Recentemente eu fiz uma pergunta sobre como limpar o que eu considero código feio. Uma recomendação foi criar um método de extensão que executasse a function desejada e retornasse o que eu queria. Meu primeiro pensamento foi ‘Ótimo! Quão legal são as Extensões … ‘, mas depois de pensar um pouco mais, estou começando a […]

Gerar methods de extensão usando System.CodeDom

Alguém já tentou gerar methods de extensão usando System.CodeDom no .NET 4.0? Não parece haver nenhuma maneira de especificar um CodeMemberMethod ou CodeParameterDeclarationExpression como sendo um método / parâmetro de extensão. Se isso não for possível, existem boas soluções? obrigado

C #: Melhor prática para validar o argumento “this” em methods de extensão

Digamos que eu tenha um método de extensão public static T TakeRandom(this IEnumerable e) { … Para validar o argumento e, devo: A) if (e == null) lançar novo NullReferenceException () B) if (e == null) lançar novo ArgumentNullException (“e”) C) Não verificar e Qual é o consenso? Meu primeiro pensamento é sempre validar argumentos, […]

Usando Atributos para Restrições Genéricas

Dado um exemplo como .. public interface IInterface { } public static void Insert(this IList list, IList items) where T : IInterface { // … logic } Isso funciona bem, mas eu queria saber se é possível usar um atributo como uma restrição. Tal como … class InsertableAttribute : Attribute public static void Insert(this IList […]

Qual é a melhor maneira de adicionar um item a um IEnumerable ?

Aqui está como eu adicionaria um item a um object IEnumerable: //Some IEnumerable object IEnumerable arr = new string[] { “ABC”, “DEF”, “GHI” }; //Add one item arr = arr.Concat(new string[] { “JKL” }); Isto é estranho. Eu não vejo um método chamado algo como ConcatSingle() no entanto. Existe uma maneira mais limpa de adicionar […]

Por que a coleção Controls não fornece todos os methods IEnumerable?

Eu não tenho certeza de como o ControlCollection do ASP.Net funciona, então talvez alguém possa lançar alguma luz sobre isso para mim. Eu descobri recentemente a magia que é methods de extensão e Linq. Bem, fiquei muito triste ao descobrir que esta syntax não é válida var c=Controls.Where(x => x.ID==”Some ID”).SingleOrDefault(); No entanto, pelo que […]