DynamicProxy を使用するコードを DynamicProxy2 に更新しようとしています。特に、DynamicProxy を使用して 2 つのクラスの mixin を提供しています。セットアップは次のようなものです。
public interface IHasShape
{
string Shape { get; }
}
public interface IHasColor
{
string Color { get; }
}
public interface IColoredShape : IHasShape, IHasColor
{
}
次に、IHasShape と IHasColor の明らかな具体的な実装を想定して、次のような mixin を作成します。
public IColoredShape CreateColoredShapeMixin(IHasShape shape, IHasColor color)
{
ProxyGenerator gen = new ProxyGenerator();
StandardInterceptor interceptor = new StandardInterceptor();
GeneratorContext context = new GeneratorContext();
context.AddMiniInstance(color);
return gen.CreateCustomProxy(typeof(IColoredShape), intercetor, shape, context);
}
プロキシ作成の結果を除いて、IColoredShape の具体的な実装はありません。StandardInterceptor は、IColoredShape オブジェクトの呼び出しを受け取り、必要に応じて「shape」または「color」オブジェクトに委任します。
しかし、私は新しい DynamicProxy2 をいじっていて、同等の実装を見つけることができません。