Quante volte ci è capitato di dover accedere ad un componente esterno (realizzato da altri) che non ha un interfaccia condivisa ho condivisibile... e quindi non poterlo sfruttare al meglio ??
A me capita spesso.... ma questo caso mi sono fatto più furbo che tecnico...
using System;
using System.Collections.Generic;
namespace Test
{
// interfaccia
public interface IWsDerived
{
string DerivedMethod(string text);
}
// costruttore
public class WsConcrete
{
// modello primario
public IWsDerived GetDeploy(int model)
{
if (model == 1) { return new coModelA(); }
if (model == 2) { return new coModelB(); }
}
// modello non in uso
public IWsDerived GetTest()
{
}
}
// componente "a" che non implementa l'interfaccia
public class ModelA
{
public string DoMoreAboutIt(string message)
{
return message + "| Done";
}
}
// componente "b" che non implementa l'interfaccia
public class ModelB
{
public string DoMoreText(string message)
{
return message + "| Text Done";
}
}
// wrapper (+ o -) per modello A
public class coModelA : IWsDerived
{
public string DerivedMethod(string Message)
{
ModelA a = new ModelA();
return a.DoMoreAboutIt(Message);
}
}
// wrapper (+ o -) per modello B
public class coModelB : IWsDerived
{
public string DerivedMethod(string Message)
{
ModelB b = new ModelB();
return b.DoMoreText(Message);
}
}
}
Model A e Model B immaginateli come blocchi esterni...
All'interno del mio processo diventano accessibili tramite l'interfaccia...
Scritto e compilato !!
Nessun commento:
Posta un commento