CastleDynamic proxy: NullReferenceException при вызове метода прокси - PullRequest
2 голосов
/ 23 ноября 2011

Я использую StructureMap , чтобы получить экземпляр интерфейса, и я обертываю его в прокси с Castle DynamicProxy :

var proxy = generator.CreateInterfaceProxyWithTarget<T>(
    ObjectFactory.GetInstance<T>()
    , new SwitchInterceptor(isGranted, foundUser));

В перехватчике типа IInterceptor у меня есть этот код:

public override void Intercept(IInvocation invocation)
{
    if (this.CanExecute)
    {
        invocation.Proceed();
    }
}

Когда CanExecute равен true, он всегда работает, но иногда , когда CanExecute равен false, я получил странный NullReferenceException с очень маленькой трассировкой стека:

at Castle.Proxies.IGrantedReadProxy.ExecuteSomething()

Я действительно потерян и не знаю, где искать. Вы хоть представляете, в чем проблема?

1 Ответ

2 голосов
/ 23 ноября 2011

Я думаю, что проблема в том, что тип возвращаемого значения - это необнуляемый тип значения (например, int) В этом случае возвращаемое по умолчанию значение null, которое имеет invocation, не применимо. И вы не устанавливаете его, вызывая invocation.Proceed() либо, поэтому вы должны установить его по-другому.

Вы должны явно установить invocation.ReturnValue в этих случаях. Другой вариант - добавить более информативное исключение.

...