Articles of extension methods

Quais vantagens dos methods de extensão você encontrou?

Um “não crente” do C # estava me perguntando qual era o propósito dos methods de extensão. Eu expliquei que você poderia adicionar novos methods a objects que já estavam definidos, especialmente quando você não possui / controla a fonte para o object original. Ele trouxe “Por que não apenas adicionar um método à sua […]

Sobrecarga do operador com methods de extensão C #

Eu estou tentando usar methods de extensão para adicionar uma sobrecarga de operadora para a class C # StringBuilder . Especificamente, dado o StringBuilder sb , eu gostaria que sb += “text” se tornasse equivalente a sb.Append(“text”) . Aqui está a syntax para criar um método de extensão para StringBuilder : public static class sbExtensions […]

Por que a palavra-chave ‘this’ é necessária para chamar um método de extensão de dentro da class estendida

Eu criei um método de extensão para um ASP.NET MVC ViewPage, por exemplo: public static class ViewExtensions { public static string Method(this ViewPage page) where T : class { return “something”; } } Ao chamar esse método de uma View (derivada de ViewPage ), recebo o erro ” CS0103: O nome ‘Method’ não existe no […]

Os methods de extensão devem ser definidos em uma class estática não genérica

Estou recebendo o erro: Os methods de extensão devem ser definidos em uma class estática não genérica Na linha: public class LinqHelper Aqui está a class auxiliar, baseada no código de Mark Gavells. Estou muito confuso sobre o que esse erro significa, pois tenho certeza de que estava funcionando bem quando o deixei na sexta-feira! […]

Detectar versão do framework de destino em tempo de compilation

Eu tenho algum código que faz uso de methods de extensão, mas compila em .NET 2.0 usando o compilador no VS2008. Para facilitar isso, eu tive que declarar ExtensionAttribute: /// /// ExtensionAttribute is required to define extension methods under .NET 2.0 /// public sealed class ExtensionAttribute : Attribute { } No entanto, eu gostaria agora […]

Extensões do Razor HtmlHelper (ou outros namespaces para modos de exibição) não encontrados

Não sei se isso estava acontecendo no PR ou Beta, mas se eu criar um método de extensão no HtmlHelper , ele não será reconhecido em uma página do Razor: namespace SomeNamespace.Extensions { public static class HtmlExtensions { public static string Foo(this HtmlHelper html) { return “Foo”; } } } Eu adicionei-o à seção no […]

Como eu uso o Moq para zombar de um método de extensão?

Estou escrevendo um teste que depende dos resultados de um método de extensão, mas não quero que uma falha futura desse método de extensão interrompa esse teste. Zombar desse resultado parecia a escolha óbvia, mas o Moq não parece oferecer uma maneira de replace um método estático (um requisito para um método de extensão). Há […]

C # tem propriedades de extensão?

C # tem propriedades de extensão? Por exemplo, posso adicionar uma propriedade de extensão a DateTimeFormatInfo chamada ShortDateLongTimeFormat que retornaria ShortDatePattern + ” ” + LongTimePattern ?

Por que não há um método de extensão ForEach no IEnumerable?

Inspirado por outra pergunta perguntando sobre a function Zip ausente: Por que não há um método de extensão ForEach na class Enumerable ? Ou em qualquer lugar? A única class que obtém um método ForEach é List . Existe uma razão pela qual está faltando (desempenho)?

Qual método executa melhor: .Any () vs .Count ()> 0?

no namespace System.Linq , agora podemos estender nosso IEnumerable para ter os methods de extensão Any() e Count() . Foi-me dito recentemente que, se eu quiser verificar se uma coleção contém 1 ou mais itens dentro dela, devo usar o método de extensão .Count() > 0 vez do método de extensão .Count() > 0 porque […]