我想对没有实现的接口使用Unity拦截,以便IInterceptionBehavior实际上成为实现。这与Castle Dynamic Proxy中的CreateInterfaceProxyWithoutTarget方法相同。
这在Unity中是否可行?
答案 0 :(得分:3)
我认为不,我知道拦截界面的唯一方法是使用InterfaceInterceptor
but it requires a base class to be registered in the container:
Container.RegisterType<IRepository, BaseRepository>(
"repo1",
new Interceptor(new InterfaceInterceptor()),
new InterceptionBehavior(new RepoLoggingBehavior())
);
答案 1 :(得分:0)
自从这个问题发布以来已经有很长一段时间了,但我在试图找出相同的情况时遇到了它,好吧,似乎我想出了一些东西。
我通过使用Intercept.NewInstanceWithAdditionalInterfaces使其工作。 在下面的示例中,我希望Unity创建一个实现IUserDao的非定义类的实例。我希望Unity创建类的实例在RetrieveSavedResultBehavior中定义。
IUserDao userDao = (IUserDao)(Intercept.NewInstanceWithAdditionalInterfaces<Object>(
new VirtualMethodInterceptor(),
new List<IInterceptionBehavior>(){new RetrieveSavedResultBehavior()},
new List<Type>() { typeof(IUserDao) }
));
您可以查看有关此主题的帖子here