Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法为动态创建的代理筛选WCF方法_Wcf_Dynamic_Methods - Fatal编程技术网

无法为动态创建的代理筛选WCF方法

无法为动态创建的代理筛选WCF方法,wcf,dynamic,methods,Wcf,Dynamic,Methods,几个月前,我正在做一个项目,在下拉列表中显示WCF方法和它们的参数。当时,我正在使用addservice引用创建一个代理,并在代码中对服务接口进行了硬编码。 但是,当我尝试动态创建代理以执行相同操作时,下面的代码不起作用。请帮助我仅显示我定义的方法 // Using Dynamic Proxy Factory by Vipul Modi @ Microsoft DynamicProxyFactory factory = new DynamicProxyFactory(txtService.Tex

几个月前,我正在做一个项目,在下拉列表中显示WCF方法和它们的参数。当时,我正在使用addservice引用创建一个代理,并在代码中对服务接口进行了硬编码。 但是,当我尝试动态创建代理以执行相同操作时,下面的代码不起作用。请帮助我仅显示我定义的方法

// Using Dynamic Proxy Factory by Vipul Modi @ Microsoft
DynamicProxyFactory factory = new DynamicProxyFactory(txtService.Text);

// endpoints.            
string sContract = "";

foreach (ServiceEndpoint endpoint in factory.Endpoints)
{
    sContract = endpoint.Contract.Name;      //this is the service interface name, IAccountInfoService         
}
DynamicProxy proxy = factory.CreateProxy(sContract);
Type proxyType = proxy.ProxyType;

MethodInfo[] methods = proxyType.GetMethods();
foreach (var method in methods)
{
    //if (method.GetCustomAttributes(typeof(OperationContractAttribute), true).Length == 0)
    //    continue;
    string methodName = method.Name;
    ddlMethods.Items.Add(methodName);
}

代码注释了方法.GetCustomAttributes(typeof(OperationContractAttribute),true)。长度无效。它没有显示任何方法。如果我把它注释掉,那么结果就是所有的方法和变量。我想把它限制在用户定义的方法上。

我对DynamicProxy Factory一无所知,但看着它,我觉得

1) 代理实际上不发出具有该属性的方法。虽然我认为您可以自己调整代码以实现这一点,但似乎没有必要这样做


2) 如果您只需要一个方法名称列表,那么您似乎可以从factory.Contracts中获得它

我实际上想要获得方法名称,然后是服务契约中定义的每个方法的参数列表。使用ContractDescription和OperationDescription,我可以获取方法列表,但不确定如何获取参数?