我已經創建了一個自定義數據綁定控件,按照我的要求,現在我想限制此控件應該將自定義集合作爲數據源,而不是每個集合,這是推動IEnuberable接口。如何限制自定義數據綁定控件接受我的自定義集合作爲數據源?
是否可以限制?如果是,如何限制?
在此先感謝..
我已經創建了一個自定義數據綁定控件,按照我的要求,現在我想限制此控件應該將自定義集合作爲數據源,而不是每個集合,這是推動IEnuberable接口。如何限制自定義數據綁定控件接受我的自定義集合作爲數據源?
是否可以限制?如果是,如何限制?
在此先感謝..
你可以把一個後衛在數據源的制定者?
public object DataSource
{
get
{
return ....;
}
set
{
if (value is typeof(myCollection))
this.dataSource = value;
else
throw InvalidOperationException("DataSource must by {0}" typeof(myCollection).FullName;
}
}
最簡單的方法之一是將類型檢查放入與數據源相關的屬性中。例如,@Preet已經指出重寫DataSource
setter。只有在問題出現的時候,您還需要注意使用DataSourceID
綁定控件的情況。
我寧願推薦在DataBoundControl.PerformDataBinding方法中加入一個類型檢查 - 這當然假設你從DataBoundControl
類繼承。這個方法被調用,所以派生類實際上可以綁定數據 - 所以它是一個很好的候選人。另一個等值是將檢入OnDataBind
。
另一種方法是將特定集合作爲屬性公開以接受數據。在這種情況下,您應該避免暴露DataSource
相關屬性。