Эквивалент перехвата Unity 2 для CreateInterfaceProxyWithoutTarget в Castle Dynamic Proxy

Я хочу использовать перехват Unity для интерфейса без реализации, чтобы IInterceptionBehavior фактически стал реализацией. Это то же самое, что и метод CreateInterfaceProxyWithoutTarget в Castle Dynamic Proxy.

Возможно ли это в Unity?


person Paul Hiles    schedule 02.02.2011    source источник


Ответы (2)


Думаю, нет, единственный известный мне способ перехватить интерфейс — это InterfaceInterceptor но для этого требуется зарегистрировать базовый класс в контейнере:

Container.RegisterType<IRepository, BaseRepository>(
    "repo1",
    new Interceptor(new InterfaceInterceptor()),
    new InterceptionBehavior(new RepoLoggingBehavior())
    );
person onof    schedule 02.02.2011

Прошло много времени с тех пор, как этот вопрос был опубликован, но я наткнулся на него, пытаясь понять то же самое, и, похоже, я что-то придумал.

Я заставил это работать, используя Intercept.NewInstanceWithAdditionalInterfaces. В приведенном ниже примере я хочу, чтобы Unity создал экземпляр неопределенного класса, реализующего IUserDao. Все, что я хочу, чтобы этот экземпляр созданного Unity класса делал, определяется в RetrieveSavedResultBehavior.

IUserDao userDao = (IUserDao)(Intercept.NewInstanceWithAdditionalInterfaces<Object>(
            new VirtualMethodInterceptor(),
            new List<IInterceptionBehavior>(){new RetrieveSavedResultBehavior()},
            new List<Type>() { typeof(IUserDao) }
            ));

Вы можете проверить мой пост по этой теме здесь

person Xose Lluis    schedule 30.09.2012