Um exemplo bastante prático são as subscricões de feeds para os blogs. Fiz um codigo que ilustra isso mesmo usando eventos.
class Program
{
/*Declaracao de um delegate*/
public delegate void feedback
/*Declaracao de um tipo que deriva de eventsArgs que é a mensagem*/
public class msg:EventArgs {
public string _assunto, _corpoMsg;
public msg(string _ass,string _cor){
_assunto=_ass;
_corpoMsg = _cor;
}
public string ASSUNTO{
get {
return _assunto;
}
}
public string CORPOMSG {
get {
return _corpoMsg;
}
}
}
public class Blogspot {
/*Evento baseado no delegate criado anteriormente*/
public event feedback
public string _nomeBlog, _ownerBlog;
int _max_size;
msg [] _myMSG=new msg [10];
int _nrMsg;
public Blogspot(string _nome, string _owner) {
_nomeBlog = _nome;
_ownerBlog = _owner;
_nrMsg = 0;
_max_size = 10;
}
public void novoPost(msg e) {
if (_nrMsg < class="Apple-style-span" color="#33FF33"> /*Se houverem subscritores entao lanca o evento*/
listaSubscricoes.Invoke(this, e);
}
}
}
}
public class netSurfer{
public string _nome;
public netSurfer (string _nome1){
_nome = _nome1;
}
/*Este metodo respeita o formato do delegate que definimos e vai ser registado no evento*/
private void novoPost(Object bs, msg e) {
Console.WriteLine("Olá , eu sou o {0} e recebi um post do blog {1}!!", _nome, ((Blogspot)bs)._nomeBlog);
Console.WriteLine("A assunto da mensagem é: '{0}' e o corpo da mensagem é o seguinte: '{1}'", e.ASSUNTO, e.CORPOMSG);
Console.WriteLine();
}
public void registaBlog(Blogspot bs) {
bs.listaSubscricoes += novoPost;
}
}
static void Main(string[] args)
{
/*Criacao das entidades*/
Blogspot bs = new Blogspot("Byte-Beats", "Wilson Govindji");
netSurfer ns1 = new netSurfer("zé");
netSurfer ns2 = new netSurfer("maria");
/*o ns1 subscreve que quer receber novos posts do blog*/
ns1.registaBlog(bs);
/*Novo post*/
bs.novoPost(new msg("CLR","O CLR é a maquina virtual que suporta o .Net"));
/*o ns2 tambem subscreve que quer receber novos posts do blog*/
ns2.registaBlog(bs);
/*Novo post*/
bs.novoPost(new msg("Eventos","Os eventos no .net baseiam-se nos delegates e são muito uteis"));
}
}
OUTPUT:

Sem comentários:
Enviar um comentário