几个月前,我正在开发一个项目,在下拉列表中显示WCF方法及其参数。那时我正在使用添加服务引用创建代理,并在代码中硬编码服务接口。 How can I show all the methods that are available in my WCF in a dropdown 但是当我尝试动态创建代理以执行相同操作时,下面的代码不起作用。请帮我只显示我定义的方法。
// 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).Length不起作用。它没有显示任何方法。如果我将其注释掉,那么结果就是所有的方法和变量。我想将其限制为仅用户定义的方法。
答案 0 :(得分:0)
我对DynamicProxyFactory一无所知,但是看http://blogs.msdn.com/b/vipulmodi/archive/2006/11/16/dynamic-programming-with-wcf.aspx它让我觉得
1)代理实际上没有使用该属性发出方法。它似乎没有必要,但我想你可以自己调整代码来实现这一点。
2)如果您只想要一个方法名称列表,那么您似乎可以从工厂获得.Contracts