Перехват Unity: Как передать параметр в реализацию ICallHandler? - PullRequest
3 голосов
/ 18 июля 2011

Можно ли передать параметр message в реализацию 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;
    }

?

Ответы [ 2 ]

1 голос
/ 09 августа 2011

Кажется, Стив Уилкс был прав: «Честно говоря, это невозможно, если перехватить».

http://unity.codeplex.com/discussions/265679

1 голос
/ 18 июля 2011

message, который вы передаете методу Resolve, на самом деле является именованным именем экземпляра, который Unity должен создать. Это значение используется Unity, чтобы выбрать, какую реализацию IBusinessLogic использовать; после строительства объекта-исполнителя он утерян.

Это значение, следовательно, только внутри Unity во время строительства объекта; ваш ICallHandler не может получить к нему доступ как , вы не можете перехватить конструкторы .

...