0

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

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

提前致谢..

4

2 回答 2

1

你可以在 DataSource 的 setter 中设置一个守卫吗?

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

最简单的方法之一是将类型检查放在数据源相关属性中。例如,@Preet 已经指出了重写DataSourcesetter。该方法的唯一问题是,您还需要处理使用DataSourceID.

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

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

于 2011-08-30T05:22:46.247 回答