Я пытаюсь обновить код с помощью DynamicProxy до DynamicProxy2. В частности, мы использовали DynamicProxy для объединения двух классов. Установка выглядит примерно так:
public interface IHasShape
{
string Shape { get; }
}
public interface IHasColor
{
string Color { get; }
}
public interface IColoredShape : IHasShape, IHasColor
{
}
Затем, предполагая некоторые очевидные конкретные реализации IHasShape и IHasColor, мы создадим миксин, подобный этому:
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 и не могу найти эквивалентную реализацию.