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

问题描述:

我已经创建了一个自定义数据绑定控件,按照我的要求,现在我想限制此控件应该将自定义集合作为数据源,而不是每个集合,这是推动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相关属性。