如何限制自定义数据绑定控件接受我的自定义集合作为数据源?

时间:2011-08-30 04:55:13

标签: .net asp.net custom-controls databound

我已根据自己的要求创建了自定义数据绑定控件,现在我想限制此控件应该将自定义集合作为数据源而不是每个集合都是impelmented IEnuberable接口。

可以限制吗?如果是,如何限制?

提前致谢..

2 个答案:

答案 0 :(得分: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;
  }
}

答案 1 :(得分:0)

最简单的方法之一是将类型检查放在与数据源相关的属性中。例如,@ Preet已经指出了重写DataSource setter。只讨论该方法,您还需要处理使用DataSourceID绑定控件的情况。

我宁愿建议在DataBoundControl.PerformDataBinding方法中进行类型检查 - 这当然是假设您继承了DataBoundControl类。调用此方法,以便派生类实际上可以绑定数据 - 因此它是一个很好的候选者。另一个等价物是检查OnDataBind

另一种方法是将特定集合公开为接受数据的属性。在这种情况下,您应该避免暴露DataSource相关属性。