Aqui fica um exemplo que achei interessante sobre extensão de metodos em .net
namespace Extensions
{
using System;
using ExtensionMethodsDemo1;
// Define extension methods for any type that implements IMyInterface.
public static class Extension
{
public static void MethodA(this IMyInterface myInterface, int i)
{
Console.WriteLine("Extension.MethodA(this IMyInterface myInterface, int i)");
}
public static void MethodA(this IMyInterface myInterface, string s)
{
Console.WriteLine("Extension.MethodA(this IMyInterface myInterface, string s)");
}
// This method is never called, because the three classes implement MethodB.
public static void MethodB(this IMyInterface myInterface)
{
Console.WriteLine("Extension.MethodB(this IMyInterface myInterface)");
}
}
}
namespace ExtensionMethodsDemo1
{
using System;
using Extensions;
public interface IMyInterface
{
void MethodB();
}
class A : IMyInterface
{
public void MethodB(){Console.WriteLine("A.MethodB()");}
}
class B : IMyInterface
{
public void MethodB() { Console.WriteLine("B.MethodB()"); }
public void MethodA(int i) { Console.WriteLine("B.MethodA(int i)"); }
}
class C : IMyInterface
{
public void MethodB() { Console.WriteLine("C.MethodB()"); }
public void MethodA(object obj) { Console.WriteLine("C.MethodA(object obj)"); }
}
class ExtMethodDemo
{
static void Main(string[] args)
{
A a = new A();
B b = new B();
C c = new C();
TestMethodBinding(a,b,c);
}
static void TestMethodBinding(A a, B b, C c)
{
// A has no methods, so each call resolves to
// the extension methods whose signatures match.
a.MethodA(1); // Extension.MethodA(object, int)
a.MethodA("hello"); // Extension.MethodA(object, string)
a.MethodB(); // A.MethodB()
// B itself has a method with this signature.
b.MethodA(1); // B.MethodA(int)
b.MethodB(); // B.MethodB()
// B has no matching method, but Extension does.
b.MethodA("hello"); // Extension.MethodA(object, string)
// In each case C has a matching instance method.
c.MethodA(1); // C.MethodA(object)
c.MethodA("hello"); // C.MethodA(object)
c.MethodB(); // C.MethodB()
}
}
}
/* Output:
Extension.MethodA(this IMyInterface myInterface, int i)
Extension.MethodA(this IMyInterface myInterface, string s)
A.MethodB()
B.MethodA(int i)
B.MethodB()
Extension.MethodA(this IMyInterface myInterface, string s)
C.MethodA(object obj)
C.MethodA(object obj)
C.MethodB()
*/
Nygma 7
Um simples lugar, onde exponho ideias.
terça-feira, 15 de junho de 2010
segunda-feira, 14 de junho de 2010
Collection generic
Um exemplo de como utilizar uma colecção generica, no meu ponto de vista é melhor que os arrays, pq nos arrays muitas vezes, se não for dinamica, temos que especificar um tamanho para o contentor, mas pode ocorrer que não sabemos o tamanho que poderá ser introduzido no contentor. Por isso introduzimos numa lista, e podemos usar a propriedade Count para saber quantos elementos estão a ser alojados nesta colecção.
List myInts = new List();
myInts.Add(1);
myInts.Add(2);
myInts.Add(3);
foreach(Int32 i in myInts)
{
Console.WriteLine("MyInts: {0}", i);
}
List
myInts.Add(1);
myInts.Add(2);
myInts.Add(3);
foreach(Int32 i in myInts)
{
Console.WriteLine("MyInts: {0}", i);
}
Windows 7 God's mode
Para os curiosos e para quem gosta de "brincar" um pouco com estas coisas, aqui vai uma sugestão. No desktop criem uma pasta com o nome
GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}
Está pasta irá conter vários aspectos de configuração do windows 7.
Explorem pode ser engraçado...
GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}
Está pasta irá conter vários aspectos de configuração do windows 7.
Explorem pode ser engraçado...
Subscrever:
Mensagens (Atom)