如何限制自定义数据绑定控件接受我的自定义集合作为数据源?
问题描述:
我已经创建了一个自定义数据绑定控件,按照我的要求,现在我想限制此控件应该将自定义集合作为数据源,而不是每个集合,这是推动IEnuberable接口。如何限制自定义数据绑定控件接受我的自定义集合作为数据源?
是否可以限制?如果是,如何限制?
在此先感谢..
答
你可以把一个后卫在数据源的制定者?
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
类继承。这个方法被调用,所以派生类实际上可以绑定数据 - 所以它是一个很好的候选人。另一个等值是将检入OnDataBind
。
另一种方法是将特定集合作为属性公开以接受数据。在这种情况下,您应该避免暴露DataSource
相关属性。