Click here to Skip to main content
15,897,704 members
Articles / Programming Languages / C#

GOF's Adapters and Some Magic

Rate me:
Please Sign up or sign in to vote.
3.80/5 (3 votes)
21 Apr 2009CPOL14 min read 25.1K   85   32  
How to create automated Adapters and extend/modify the original functionality with default member’s implementation for interfaces, Eiffel-like Separates, Code Injection, and Design by Contract.
using System;
using System.Collections.Generic;
using System.Text;
using Scaredfingers.Adapters;

namespace Scaredfingers.InjectionsTest
{
  delegate void F(int x, int y) ;
  class Program
  {
    static void Main(string[] args)
    {
      IGenericAdapterBuilder builder = new InjectionsAdapterBuilder();

      IAdapter adapter1 = builder.BindAdapter<IAdapter>(new Adaptee1());
      adapter1.Method1();
      adapter1.Method2(0, 1);

      IAdapter adapter2 = builder.BindAdapter<IAdapter>(new Adaptee2());
      adapter2.Method2(2, 3);
    }
  }

  [Log]
  public interface IAdapter
  {
    void Method1();
    void Method2(int x, int y);
  }

  public class Adaptee1
  {
    public void Method1()
    {
      Console.WriteLine("Adaptee1::Method1()");
    }

    public void Method2(int x, int y)
    {
      Console.WriteLine("Adaptee1::Method2(int {0}, int {1})", x, y);
    }
  }

  public class Adaptee2
  {
    public void Method1()
    {
      Console.WriteLine("Adaptee2::Method1()");
    }

    public void Method2(int x, int y)
    {
      Console.WriteLine("Adaptee2::Method2(int {0}, int {1})", x, y);
    }  
  }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Architect SunHotels
Spain Spain
I Received a Bachelor's Degree in Computer Science at the Mathematics and Computer Science Faculty, University of Havana, Cuba.

I mainly work in web applications using C# and some Javascript. Some very few times do some Java.

Comments and Discussions