我已经根据我的要求创建了一个自定义数据绑定控件,现在我想限制这个控件应该将自定义集合作为数据源,而不是使用 IEnuberable 接口的每个集合。
可以限制吗?如果是,如何限制?
提前致谢..
我已经根据我的要求创建了一个自定义数据绑定控件,现在我想限制这个控件应该将自定义集合作为数据源,而不是使用 IEnuberable 接口的每个集合。
可以限制吗?如果是,如何限制?
提前致谢..
你可以在 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;
}
}
最简单的方法之一是将类型检查放在数据源相关属性中。例如,@Preet 已经指出了重写DataSource
setter。该方法的唯一问题是,您还需要处理使用DataSourceID
.
我宁愿建议在DataBoundControl.PerformDataBinding方法中进行类型检查 - 这当然是假设您从DataBoundControl
类继承。调用此方法以便派生类可以实际绑定数据 - 因此它是一个很好的候选者。另一个等价物是 check in OnDataBind
。
另一种方法是将特定集合公开为接受数据的属性。在这种情况下,您应该避免暴露DataSource
相关属性。