首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

.NET 組件編程(九)補充:ISupportInitialize 接口詳解

     編輯:關於.NET

雖本不打算寫 ISupportInitialize,但為系列完整性仍補充此文。MSDN 定義:指定物件支援批次初始化的簡易交易通知,允許控件優化多組屬性,於設計時初始化相依屬性或批次設定多屬性。

介面包含兩方法:

  • BeginInit():通知初始化即將開始
  • EndInit():通知初始化完成

如何解決屬性相依問題?

範例:Class1 需在初始化完成後執行 Test1()(依賴屬性 A、B)。

public class Class1 : Component, ISupportInitialize {
    public Class1() { /* 位置1:A、B 未賦值 */ }
    private string _a;
    public string A {
        get { return _a; }
        set { _a = value; /* 位置2:A 有值,B 無值 */ }
    }
    private string _b;
    public string B {
        get { return _b; }
        set { _b = value; /* 位置3:A、B 皆有值 */ }
    }
    public void BeginInit() { }
    public void EndInit() { _c2.B(); /* 位置4:所有屬性賦值完成 */ }
    public void Test1() { MessageBox.Show(A + ":" + B); }
}

程式設計師難知屬性賦值順序(先 A 後 B 或反),故不可在 setter 執行相依邏輯。EndInit() 確保所有屬性已賦值,是執行相依初始化的最佳時機。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved