Ho un metodo che accetta un'interfaccia e digita il controllo sul parametro, e in base al tipo viene presa una decisione per inviare un messaggio di posta elettronica o un avviso
public void Bar(ISomeInterface someClass)
{
if (someClass is SomeClassToo)
{
Emailer.Send(someClass.Something());
}
else
{
Alerter.Alert(someClass.Something());
}
}
So che questo è negativo per ovvi motivi, ma mi piacerebbe sapere quali altre opzioni devo risolvere, poiché una delle soluzioni che ho è di mettere un'astrazione su ciascuna delle classi che implementa ISomeInterface per l'emailer / alerter usando un ICommunicator (vedi sotto) ma non sono sicuro che sia giusto in quanto sembra che da qualche parte nel mio codice ci sia qualcosa che controlla il tipo o sa di ogni tipo anche se è solo in una configurazione di container IOC .
public class SomeClass : ISomeInterface
{
private ICommunicator _communicator;
public SomeClass(ICommunicator communicator)
{
_communicator = communicator;
}
public void Something()
{
if (_communicator != null)
{
_communicator.Send("yee ha");
}
}