Unity 2 Перехват эквивалентный CreateInterfaceProxyWithoutTarget в Castle Dynamic Proxy - PullRequest
0 голосов
/ 02 февраля 2011

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

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

Ответы [ 2 ]

3 голосов
/ 02 февраля 2011

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

Container.RegisterType<IRepository, BaseRepository>(
    "repo1",
    new Interceptor(new InterfaceInterceptor()),
    new InterceptionBehavior(new RepoLoggingBehavior())
    );
0 голосов
/ 01 октября 2012

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

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

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

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

...