列出WCF运营合同的UriTemplate?

时间:2010-02-13 16:52:55

标签: c# wcf

有没有人知道在WCF中列出各种运营合同的UriTemplate的方法?我想做的是以某种方式在IntegrationTesting中启动自主服务并循环遍历所有操作契约并尽可能打印UriTemplates。

1 个答案:

答案 0 :(得分:4)

你的意思是行动吗? OperationContract上没有UriTemplate属性。

如果是,您可以使用反射来获取类型的方法,并从每个方法获取OperationContractAttribute以获取它的Action属性。

var methods = typeof (IService1).GetMethods();
IEnumerable<string> actions = methods.Where(
    m => m.GetCustomAttributes(typeof (OperationContractAttribute), true).Count() > 0)
    .Select(m => 
        ((OperationContractAttribute)m.GetCustomAttributes(typeof (OperationContractAttribute), true).First()).Action);

Console.WriteLine(string.Join("\r\n",actions.ToArray()));

编辑:正如marc提到的,您可能会在WebGet之后,因此将OperationContractAttribute替换为WebGetAttribute,将Action替换为UriTemplate或您希望看到的任何属性。< / p>