martedì 7 luglio 2009

How To: implement an Interface (part 2)

Mi è stato chiesto in un commento la differenza fra la dichiarazione esplicita e la dichiarazione implicita di un interfaccia.

A tal proposito mi sembra corretto proporre questo semplice esempio.

Due interfaccie che espongono gli stessi metodi, se le avessi implementate in modo
implicito avrei avuto il problema di comprendere l'appartenenza del metodo.

In questo modo "non solo il codice è più leggibile" ma mi consente "come" o "per chi"
sto lavorando !

public interface IRemoteClient
{
void DoSend(byte[] bs);
byte[] DoRecieve();
}

public interface ILocalClient
{
void DoSend(byte[] bs);
byte[] DoRecieve();
}


public class Fork : IRemoteClient, ILocalClient
{

void IRemoteClient.DoSend(byte[] bs)
{
// send as Remote host
}

byte[] IRemoteClient.DoRecieve()
{
// recieve as Remote host
return new byte[100];
}

void ILocalClient.DoSend(byte[] bs)
{

}

byte[] ILocalClient.DoRecieve()
{
// recieve as Client
return new byte[100];
}
}

Nessun commento: