要件に従ってカスタム データ バインド コントロールを作成しましたが、IEnuberable インターフェイスを実装するすべてのコレクションではなく、このコントロールがカスタム コレクションをデータソースとして使用するように制限したいと考えています。
制限することは可能ですか?はいの場合、これを制限する方法は?
前もって感謝します..
要件に従ってカスタム データ バインド コントロールを作成しましたが、IEnuberable インターフェイスを実装するすべてのコレクションではなく、このコントロールがカスタム コレクションをデータソースとして使用するように制限したいと考えています。
制限することは可能ですか?はいの場合、これを制限する方法は?
前もって感謝します..
DataSourceのセッターにガードを入れることはできますか?
public object DataSource
{
get
{
return ....;
}
set
{
if (value is typeof(myCollection) )
this.dataSource = value;
else
throw InvalidOperationException("DataSource must by {0}" typeof(myCollection).FullName;
}
}
最も簡単な方法の 1 つは、データ ソース関連のプロパティにタイプ チェックを配置することです。たとえば、@Preet は既にDataSource
setter のオーバーライドを指摘しています。を使用してコントロールがバインドされている状況にも対処する必要があるというアプローチの問題のみDataSourceID
。
むしろ、 DataBoundControl.PerformDataBindingメソッドに型チェックを入れることをお勧めします。これはもちろん、DataBoundControl
クラスから継承したことを前提としています。このメソッドは、派生クラスが実際にデータをバインドできるように呼び出されるため、適切な候補となります。別の等価物は、 check in を入れることOnDataBind
です。
さらに別の方法は、特定のコレクションをプロパティとして公開して、データを受け入れることです。このような場合、DataSource
関連するプロパティを公開しないようにする必要があります。