Closed SeptSky closed 2 years ago
你好! 新的版本实现了对异常抛出的控制,目前使用体验非常好,再次感谢!
我在考虑授权问题时,想通过添加Attribute的方式对指定的方法进行授权认证,满足授权认证则进行实际方法的调用,如果不满足则禁止方法的调用,对于有返回值的方法直接返回对应类型的默认值。虽然使用Castle的方法代理也能实现,但感觉还是使用你的Rougamo方式更加简单方便。不知这种方法拦截能否实现?
谢谢!
在OnEntry和OnSuccess可以通过MethodContext.ReplaceReturnValue(IMo, object)修改/设置返回值,可以参考 这里的代码
OnEntry
OnSuccess
MethodContext.ReplaceReturnValue(IMo, object)
关于你说的希望“对有返回值的方法直接返回对应类型的默认值”,你可以通过MethodContext.RealReturnType获取到方法的返回值,关于如何通过Type对象获取该类型对应的默认值,如果想找一个比较高效率或者方便的方式,你可以从StackOverflow的 这个问题 里找到不同版本的方法,希望对你有所帮助
MethodContext.RealReturnType
Type
简单测试了一下,ReplaceReturnValue确实能够拦截实际方法的调用,完美!
你好! 新的版本实现了对异常抛出的控制,目前使用体验非常好,再次感谢!
我在考虑授权问题时,想通过添加Attribute的方式对指定的方法进行授权认证,满足授权认证则进行实际方法的调用,如果不满足则禁止方法的调用,对于有返回值的方法直接返回对应类型的默认值。虽然使用Castle的方法代理也能实现,但感觉还是使用你的Rougamo方式更加简单方便。不知这种方法拦截能否实现?
谢谢!