Olá pessoal, como estamos?!
Se você não conhece Boo, deveria conhecer. É uma excelente alternativa para desenvolvimento em .net com uma sintaxe “aprimorada” de Python.
Como pode ver, esse não é o primeiro post que escrevo sobre o assunto. Se você está chegando agora, deve considerar ler o que já foi escrito.
Extension Methods em Boo
Criar uma extension method em Boo é uma tarefa simples. Basta observar as seguintes regras:
- o método deverá ser estático;
- o método deverá ser sinalizado com o atributo Extension;
- o primeiro parâmetro deverá corresponder ao tipo que estamos extendendo.
Eis nossa implementação:
namespace Extensions import System public class StringExtensions: [Extension] public static def ToPascalCase(value as string): return char.ToUpper(value[0]) + value.Substring(1);
Como você pode ver, criamos um extension method chamado ToPascalCase. Basicamente, ele devolve a mesma string que recebeu com a primeira letra (?!) em maiúsculo.
Extension Properties em Boo
Em Boo, também é possível criar Extension Properties (o que acho muito bacana). Observe:
namespace Extensions import System public class Int32Extensions: [Extension] public static Seconds[seconds as int]: get: return TimeSpan(0, 0, seconds) [Extension] public static Minutes[minutes as int]: get: return TimeSpan(0, minutes, 0) [Extension] public static Hours[hours as int]: get: return TimeSpan(hours, 0, 0)
O “truque” é utilizar o parâmetro de índice para indicar o tipo que estamos extendendo.
Utilizando Extension Methods e Extension Properties em Boo
A utilização de um Extension Method, ou Extension Property, é muito simples. Diferente do que ocorre em C#, onde “damos um using” no namespace que contem a classe com Extension Methods/Properties, “damos um import” na classe. Observe:
import System import Extensions.Int32Extensions import Extensions.StringExtensions print "elemar".ToPascalCase() print (2.Hours + 5.Minutes) // TODO: Implement Functionality Here print "Press any key to continue . . . " Console.ReadKey(true)
Executando …
Funciona.
Era isso!
![]()






Márcio Fábio Althmann
08/01/2012
Muito bom, também queria isso no C#, lembra quando conversamos sobre algumas propriedades mais inteligentes, até discutimos sobre o Memento?
Eu até tentei fazer algo em Python e usar no C#, mas não da
heuheu
Enfim parabéns pelo post