Как ограничить пользовательский элемент управления с привязкой к данным, чтобы принимать мою пользовательскую коллекцию в качестве источника данных? - PullRequest
0 голосов
/ 30 августа 2011

Я создал пользовательский элемент управления с привязкой к данным в соответствии с моими требованиями, и теперь я хочу ограничить этот элемент управления, должен принимать пользовательскую коллекцию в качестве источника данных вместо каждой коллекции, в которой реализован интерфейс IEnuberable.

Можно ли ограничить? Если да, как это ограничить?

Заранее спасибо ..

Ответы [ 2 ]

1 голос
/ 30 августа 2011

Можете ли вы поставить охрану в установщик 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;
  }
}
0 голосов
/ 30 августа 2011

Один из самых простых способов - поставить проверку типа в связанных свойствах источника данных. Например, @Preet уже указал на переопределение DataSource setter. Проблема только в подходе, что вам нужно также позаботиться о ситуации, когда элемент управления связан с использованием DataSourceID.

Я скорее рекомендую поставить проверку типа в методе DataBoundControl.PerformDataBinding - это, конечно, при условии, что вы унаследовали от класса DataBoundControl. Этот метод вызывается так, чтобы производный класс мог фактически связать данные - так что он является хорошим кандидатом. Другой эквивалент - поставить чек на OnDataBind.

Еще один способ - представить конкретную коллекцию как свойство для принятия данных. В таком случае вам следует избегать выставления DataSource связанных свойств.

...