我可以像这样将消息参数传递给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;
    }


最佳答案

您传递给message方法的Resolve实际上是Unity要构造的命名实例名称。 Unity使用此值来选择要使用的IBusinessLogic实现。在构造实施对象之后,它将丢失。

因此,该值仅在对象构造期间在Unity内部;您的ICallHandler无法以you cannot intercept constructors身份访问它。

10-05 23:46