0

要件に従ってカスタム データ バインド コントロールを作成しましたが、IEnuberable インターフェイスを実装するすべてのコレクションではなく、このコントロールがカスタム コレクションをデータソースとして使用するように制限したいと考えています。

制限することは可能ですか?はいの場合、これを制限する方法は?

前もって感謝します..

4

2 に答える 2

1

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;
  }
}
于 2011-08-30T05:00:27.827 に答える
0

最も簡単な方法の 1 つは、データ ソース関連のプロパティにタイプ チェックを配置することです。たとえば、@Preet は既にDataSourcesetter のオーバーライドを指摘しています。を使用してコントロールがバインドされている状況にも対処する必要があるというアプローチの問題のみDataSourceID

むしろ、 DataBoundControl.PerformDataBindingメソッドに型チェックを入れることをお勧めします。これはもちろん、DataBoundControlクラスから継承したことを前提としています。このメソッドは、派生クラスが実際にデータをバインドできるように呼び出されるため、適切な候補となります。別の等価物は、 check in を入れることOnDataBindです。

さらに別の方法は、特定のコレクションをプロパティとして公開して、データを受け入れることです。このような場合、DataSource関連するプロパティを公開しないようにする必要があります。

于 2011-08-30T05:22:46.247 に答える