我可以通过消息参数ICallHandler实现这样的:Unity拦截:如何将参数传递给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;
}
?
我知道这段代码不起作用。我写这个来描述我的想法。我所需要的 - 将解析调用代码的参数传递给ICallHandler实现。 另外我发现它可能以某种方式将参数传递给ICallHandler实现构造函数。但是ICallHandler构造器每个容器只调用一次(就像我测试的那样)。但是我每次调用Resolve <>()时都需要传递参数。 –
'message'的性质是什么?这是你在设计时知道的吗? –
在我的例子中它是** string **。在我的真实世界的应用程序它是** System.Web.Services.WebService **。我的方面试图在实际逻辑被调用之前用** WebService **实例进行准备工作。 –