WCF中定义了很多的绑定类型,其中都定义在System.ServiceModel库文件的System.ServiceModel名字空间下,并且都以Binding结束。根据这些特点可以通过反射获取所有的绑定类型。具体实现代码如下(通过windows控制台程序实现):
using System;
using System.Collections.Generic;
using System.ServiceModel;
using System.Reflection;
namespace WCFBinding
{
class Program
{
static void Main(string[] args)
{
Module[] mods = Assembly.LoadWithPartialName("System.ServiceModel").GetModules();
foreach (Module mod in mods)
{
foreach (Type type in mod.GetTypes())
{
if (type.Name.EndsWith("Binding"))
{
if (type.IsClass && !type.IsAbstract)
{
Console.WriteLine(type.Name);
}
}
}
}
}
}
}
执行之后的结果为:
CustomBinding
BasicHttpBinding
BasicHttpContextBinding
NetTcpBinding
NetTcpContextBinding
WSHttpBinding
WSHttpContextBinding
DuplicatedChannelBinding
MsmqIntegrationBinding
ValidationBinding
NetMsmqBinding
NetNamedPipeBinding
NetPeerTcpBinding
WSFederationHttpBinding
WS2007FederationHttpBinding
WS2007HttpBinding
WSDualHttpBinding
请按任意键继续. . .
其中有17个绑定类型,不同的机器可能结果会有不同。本运行环境是.NET v4.0.30319