2011-08-30 55 views

回答

1

你可以把一個後衛在數據源的制定者?

public object DataSource 
{ 
    get 
    { 
    return ....; 
    } 
    set 
    { 
    if (value is typeof(myCollection)) 
     this.dataSource = value; 
    else 
     throw InvalidOperationException("DataSource must by {0}" typeof(myCollection).FullName; 
    } 
} 
0

最簡單的方法之一是將類型檢查放入與數據源相關的屬性中。例如,@Preet已經指出重寫DataSource setter。只有在問題出現的時候,您還需要注意使用DataSourceID綁定控件的情況。

我寧願推薦在DataBoundControl.PerformDataBinding方法中加入一個類型檢查 - 這當然假設你從DataBoundControl類繼承。這個方法被調用,所以派生類實際上可以綁定數據 - 所以它是一個很好的候選人。另一個等值是將檢入OnDataBind

另一種方法是將特定集合作爲屬性公開以接受數據。在這種情況下,您應該避免暴露DataSource相關屬性。