WCF开发插件在开发领域中占据着重要的位置。它可以帮助开发人员轻松的实现一个安全性高及可跨平台的企业级解决方案。接下来,我们通过一个案例来演示如果自定义一个WCF绑定元素。通过该绑定元素来创建我们在上面一个案例中创建的两个自定义信道管理器:SimpleChannelFactory和SimpleChannelListener。按照上面的命名方式,我们把这个自定义绑定元素命名为:SimpleBindingElement,下面是整个SimpleBindingElement的定义:
- public class SimpleBindingElement : BindingElement
- {
- public SimpleBindingElement()
- {
- PrintHelper.Print(this, "SimpleBindingElement");
- }
- public override BindingElement Clone()
- {
- PrintHelper.Print(this, "Clone");
- return new SimpleBindingElement();
- }
- public override T GetProperty< T>(BindingContext context)
- {
- PrintHelper.Print(this, string.Format("GetProperty< {0}>",
typeof(T).Name));- return context.GetInnerProperty< T>();
- }
- public override IChannelFactory< TChannel> BuildChannelFactory
< TChannel>(BindingContext context)- {
- PrintHelper.Print(this, "BuildChannelFactory< TChannel>");
- return new SimpleChannelFactory< TChannel>(context) as
IChannelFactory< TChannel>;- }
- public override IChannelListener< TChannel> BuildChannelListener
< TChannel>(BindingContext context)- {
- PrintHelper.Print(this, "BuildChannelListener< TChannel>");
- return new SimpleChannelListener< TChannel>(context) as
IChannelListener< TChannel>;- }
- }
SimpleBindingElement直接继承自抽象的基类BindingElement,对SimpleChannelFactory和SimpleChannelListener的创建分别实现在两个被重写的方法中:BuildChannelFactory< TChannel>和BuildChannelListener< TChannel>中。此外还重写了两个额外的方法:Clone和GetProperty< T>,前者用于克隆一个新的绑定元素,后一个和定义在信道、信道管理器的同名方法一样,用于获取基于某种类型的属性。
WCF绑定元素的相关自定义操作方法就为大家介绍到这里。
【编辑推荐】