has-a による委任

典型的な実装として、has-a の関係にすることが考えられます。

public class Concrete1 : IFoo
{
  public Concrete11()
  {
    impl_foo = new FooImplement(this);
  }

  #region IFoo interface implementation
  public int foo
  {  // FooImplement クラスへ委任します
     get { return impl_foo.foo;  }
     set { impl_foo.foo = value; }
  }
  :
  #endregion
}

こんなかんじですね。IFoo の実装が Concreate1 から完全に分離できているならば、引数の this は必要ないでしょうし、FooImplement のインスタンスも作成せずに実装を static method の呼び出しにすることも可能です。(当然、this をパラメータとする static method というパターンもあり)
この方法には特に問題はないのです、Java等でも使われています。しかし、この方法で実装するインターフェスが IFoo 1つだけではなく、このような実装を行うクラスが Concrete1 1つだけではなかったとしたら……この手法は非常に大量のコピペを必要とします。