, , - , .
, " ". , , . .
" " , .
, , Logger, . LogEvent(string desc, DateTime time) :
public class Logger
{
...
public void LogEvent(string desc, DateTime time)
{
...
}
}
, Email class 'Send, Logger LogEvent:
public void Send()
{
var logger = new Logger();
logger.LogEvent("Sent message", DateTime.Now);
}
Email Logger. LogEvent Logger, Email. , , ? , LogEvent, , - , , . , , , , "" . , , , , , .
Email , :
Public Class Email
{
public event EventHandler<EventArgs> Sent;
private void OnSent(EventArgs e)
{
if (Sent!= null)
Sent(this, e);
}
public string To {get;set;}
public void Send()
{
OnSent(new EventArgs());
}
}
Logger Email.Sent , :
public class Logger
{
...
public void Email_OnSent(object sender, EventArgs e)
{
LogEvent("Message Sent", DateTime.Now);
}
public void LogEvent(string desc, DateTime time)
{
...
}
}
:
var logger = new Logger();
var email = new Email();
email.Sent += logger.Email_OnSent;
, , , Logger - , , LogEvent Email. , , Email, , .
, , , 20 , , - .
BIG EDIT: . : - : # ( , ), , . (.. (object sender, EventArgs e)) , (+=), . , , . , ?
, Email . :
Public Class Email
{
public string To {get;set;}
public void Send(MailMethod method)
{
switch(method)
{
case MailMethod.Imap:
ViaImap();
break;
case MailMethod.Pop:
ViaPop();
break;
}
}
private void ViaImap() {...}
private void ViaPop() {...}
}
, , ( MailMethod, ). , :
Public Class Email
{
public Email()
{
Method = ViaPop;
}
public delegate void SendMailMethod(string title, string message);
public SendMailMethod Method;
public string To {get;set;}
public void Send()
{
Method(title, message);
}
public void SetToPop()
{
this.Method = ViaPop;
}
public void SetToImap()
{
this.Method = ViaImap;
}
private void ViaImap(string title, string message) {...}
private void ViaPop(string title, string message) {...}
}
, :
var regularEmail = new Email();
regularEmail.SetToImap();
regularEmail.Send();
var reallySlowEmail = new Email();
reallySlowEmail.Method = ViaSnailMail;
public void ViaSnailMail(string title, string message) {...}
( !). , , , lambdas - , .