官术网_书友最值得收藏!

3.3.2 IChannel和ChannelBase

WCF信道層中每種類型的信道直接或間接實現了接口System.ServiceModel.Channels.IChannel,IChannel的定義異常簡單,僅僅具有一個唯一泛型方法成員:GetProperty<T>()。

        public interface IChannel : ICommunicationObject
        {
            T GetProperty<T>() where T : class;
        }

通過調用信道對象GetProperty<T>方法,獲得具有泛型類型的屬性。這個方法比較重要,因為它是探測信道是否具有某種能力或特性的一種有效的方法。比如可以通過該方法,指定相應的泛型類型,確定信道是否支持某種消息版本和安全模式等。

除了IChannel接口之外,WCF還定義了一個實現了IChannel接口的基類:System.ServiceModel.Channels.ChannelBase。除了實現了IChannel接口,ChannelBase還實現了上面介紹的另外兩個接口:ICommnucationObject和IDefaultCommunicationTimeouts,并直接繼承自CommunicationObject。

        public abstract class ChannelBase : CommunicationObject, IChannel,
        ICommunicationObject, IDefaultCommunicationTimeouts
        {
            //其他成員
            public virtual T GetProperty<T>() where T : class;
            TimeSpan IDefaultCommunicationTimeouts.CloseTimeout { get; }
            TimeSpan IDefaultCommunicationTimeouts.OpenTimeout { get; }
            TimeSpan IDefaultCommunicationTimeouts.ReceiveTimeout { get; }
            TimeSpan IDefaultCommunicationTimeouts.SendTimeout { get; }
        }
主站蜘蛛池模板: 乌拉特中旗| 纳雍县| 利川市| 静乐县| 西昌市| 金阳县| 临洮县| 临沭县| 手游| 邵阳市| 乐至县| 秦安县| 鸡泽县| 利辛县| 宝鸡市| 文安县| 繁昌县| 兴和县| 锦州市| 油尖旺区| 黔东| 社会| 洮南市| 神池县| 万载县| 葫芦岛市| 金湖县| 海兴县| 西平县| 瑞金市| 丹阳市| 华宁县| 鄂托克旗| 平罗县| 佛坪县| 上高县| 夹江县| 大埔区| 塔河县| 浪卡子县| 东辽县|