无法为动态创建的代理过滤WCF方法

时间:2011-01-03 21:36:59

标签: wcf dynamic methods

几个月前,我正在开发一个项目,在下拉列表中显示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不起作用。它没有显示任何方法。如果我将其注释掉,那么结果就是所有的方法和变量。我想将其限制为仅用户定义的方法。

1 个答案:

答案 0 :(得分:0)

我对DynamicProxyFactory一无所知,但是看http://blogs.msdn.com/b/vipulmodi/archive/2006/11/16/dynamic-programming-with-wcf.aspx它让我觉得

1)代理实际上没有使用该属性发出方法。它似乎没有必要,但我想你可以自己调整代码来实现这一点。

2)如果您只想要一个方法名称列表,那么您似乎可以从工厂获得.Contracts