Отличительной особенностью сменного адаптера является то, что метод, вызываемый клиентом, и метод, существующий в интерфейсе, могут отличаться.
interface Ilegacy
{
float calculate(int a, int b);
}
class Legacy : Ilegacy
{
public float calculate(int a, int b)
{
return a * b;
}
}
class Adapter
{
public Func<int, int, float> legacyCalculator;
public Adapter()
{
this.legacyCalculator = new Legacy().calculate;
}
}
class Client
{
static void Main()
{
float result = new Adapter().legacyCalculator(5, 6);
}
}
Обычно это достигается с помощью делегата, Func или Action в C #