gpt4 book ai didi

c# - CaSTLeDynamic 代理 : NullReferenceException when calling method of a proxy

转载 作者:太空宇宙 更新时间:2023-11-03 11:29:41 25 4
gpt4 key购买 nike

我正在使用 StructureMap 来获得一个接口(interface)实例,并使用 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()

我真的迷路了,我不知道去哪里找。您知道问题出在哪里吗?

最佳答案

我认为问题在于返回类型是不可为空的值类型(例如 int)。在这种情况下,invocation 具有的默认返回值 null 不适用。而且您也没有通过调用 invocation.Proceed() 来设置它,因此您必须以另一种方式进行设置。

在这些情况下,您必须显式设置 invocation.ReturnValue。另一种选择是抛出信息量更大的异常。

关于c# - CaSTLeDynamic 代理 : NullReferenceException when calling method of a proxy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8241907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com