Csharp/C#教程:使用IParameterInspector.BeforeCall(字符串operationName,object 输入)中止调用分享


使用IParameterInspector.BeforeCall(字符串operationName,object 输入)中止调用

我有一个自定义行为,我实现“IParameterInspector”,以便能够使用BeforeCall和AfterCall。 我正在使用这些方法在我的WCF服务上执行调用之前进行一些validation。

这是我的属性:

[AttributeUsage(AttributeTargets.Class)] public class SendReceiveBehaviorAttribute : Attribute, IServiceBehavior { public SendReceiveBehaviorAttribute() { } public void ApplyDispatchBehavior(ServiceDescription desc, ServiceHostBase host) { foreach (ChannelDispatcher cDispatcher in host.ChannelDispatchers) { foreach (EndpointDispatcher eDispatcher in cDispatcher.Endpoints) { foreach (DispatchOperation op in eDispatcher.DispatchRuntime.Operations) { op.ParameterInspectors.Add(MyInspector); } } } } public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, Collection endpoints, BindingParameterCollection bindingParameters) { } public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase) { } } 

我的检查员:

 internal class MyInspector: IParameterInspector { public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState) { } public object BeforeCall(string operationName, object[] inputs) { // Make some verifications and cancel if it fails. return null; } } 

编辑如果validation失败,中止通话的最佳方法是什么?

抛出exception是唯一的方法 – 据我所知 – 中止。

上述就是C#学习教程:使用IParameterInspector.BeforeCall(字符串operationName,object 输入)中止调用分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/999195.html

(0)
上一篇 2021年12月27日
下一篇 2021年12月27日

精彩推荐