Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何限制自定义数据绑定控件接受自定义集合作为数据源?_.net_Asp.net_Custom Controls_Databound - Fatal编程技术网

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

.net 如何限制自定义数据绑定控件接受自定义集合作为数据源?,.net,asp.net,custom-controls,databound,.net,Asp.net,Custom Controls,Databound,我已经根据我的要求创建了一个自定义数据绑定控件,现在我想限制这个控件应该将自定义集合作为数据源,而不是将IEnuberable接口所推动的每个集合作为数据源 可以限制吗?如果是,如何限制 提前感谢..您能在数据源的setter中设置一个防护吗 public object DataSource { get { return ....; } set { if (value is typeof(myCollection) ) this.dataSo

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

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


提前感谢..

您能在数据源的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
类。调用此方法是为了使派生类能够实际绑定数据—因此它是一个很好的候选者。另一个等价物是将check放入
OnDataBind

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