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