在组件实例上调用 Castle 拦截器

发布于 2024-12-25 09:06:27 字数 112 浏览 0 评论 0原文

有没有什么简单的方法可以让我的 IInterceptor 上的方法在相关组件的任何实例解析后立即被调用?有点像 IOnBehalfAware,但它是用实际的组件实例而不是 ComponentModel 调用的。

Is there any easy way of getting a method on my IInterceptor to get called as soon as any instance for the relevant component is resolved? Sort of like IOnBehalfAware, but so that it gets called with the actual component instance, not the ComponentModel.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

执手闯天涯 2025-01-01 09:06:27

最终做了这样的事情...定义一个我的 IInterceptor 实现的接口:

public interface IInstanceAware
{
   void Execute(object instance); 
}

然后在注册组件时,执行以下操作:

registration.OnCreate((kernel, instance) => 
{
   var accessor = instance as IProxyTargetAccessor;
   foreach(var instanceAware in accessor.GetInterceptors().OfType<IInstanceAware>())
   { 
       accessor.Execute(instance);
   }
};

Ended up doing something like this...define an interface that my IInterceptor(s) implement:

public interface IInstanceAware
{
   void Execute(object instance); 
}

Then when registering component(s), do

registration.OnCreate((kernel, instance) => 
{
   var accessor = instance as IProxyTargetAccessor;
   foreach(var instanceAware in accessor.GetInterceptors().OfType<IInstanceAware>())
   { 
       accessor.Execute(instance);
   }
};
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文