Unity拦截:如何将参数传递给ICallHandler实现
本文关键字:参数传递 ICallHandler 实现 拦截 Unity | 更新日期: 2023-09-27 18:02:28
我可以像这样传递消息参数给ICallHandler实现吗?
var logic = container.Resolve<IBussinessLogic>(message);
并像这样使用:
IMethodReturn ICallHandler.Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
{
Console.WriteLine(
string.Format(
"Begin {0} with param {1}",
input.MethodBase.Name,
message // parameter I need to be passed
)
);
var result = getNext.Invoke()(input, getNext);
Console.WriteLine("End " + input.MethodBase.Name);
return result;
}
?
传递给Resolve
方法的message
实际上是Unity要构建的命名实例名。Unity使用这个值来选择使用哪个IBusinessLogic
的实现;在构造实现对象之后,它将丢失。
因此,该值仅在对象构建期间在Unity中存在;你的ICallHandler
不能访问它,因为你不能拦截构造函数。
看来,Steve Wilkes是对的:"说实话,这听起来不可能使用拦截。"
http://unity.codeplex.com/discussions/265679