程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Remoting基本原理及擴展機制(下)(3)

Remoting基本原理及擴展機制(下)(3)

編輯:關於C語言

public bool IContextAttribute.IsContextOK(Context clIEntCtx,IConstructionCallMessage ctorMsg)

只要其中一個上下文attribute返回false,CLR就必須創建一個新的上下文來容納這個新的對象。這樣,每個上下文attribute可以在這個新的上下文中注入一個或多個上下文屬性。這些注入通過以下方法完成:

public void IContextAttribute.GetPropertIEsForNewContext(IConstructionCallMessage ctorMsg)

·IContextProperty

上下文屬性是實現System.Runtime.Remoting.Contexts.IContextProperty接口的類的實例。每個上下文可以包含多個屬性。上下文屬性在上下文創建的時候通過上下文attribute注入。一旦每個上下文attribute注入了它的屬性,就會為每個屬性調用下面的方法。此後就無法在這個上下文中注入另外的屬性了:

public void IContextProperty.Freeze( Context ctx )

然後,CLR通過調用下面的方法判斷新的上下文能否滿足每個屬性:

public bool IContextProperty.IsNewContextOK( Context ctx )

每個上下文屬性都有一個通過Name屬性定義的名稱:

public string IContextProperty.Name{ get }

上下文中承載的對象的方法可以通過調用下面的方法訪問上下文屬性:

IContextProperty Context.GetProperty( string sPropertyName )

這一點很有意思,上下文中的對象通過它們所在的上下文的屬性可以共享信息並訪問服務。不過,上下文屬性的主要作用並不在於此。上下文屬性的主要作用在於向相關上下文中的消息接收器區域注入消息接收器(MessageSink)。(消息接收器區域的概念將在後面介紹)

以上注入MessageSink的過程可以用下圖概括:

MessageSink Region

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved