我有一个接口 IDataControl:
public interface IDataControl
{
...
}
然后,我有一个带有 List<IDataControl> 变量的类。
List<IDataControl> items;
问题是当我尝试将此集合的元素添加到另一个表单或另一个控件的“控件”属性中时:
panel.Controls.Add(items[i]);
IDE 告诉我“最好的重载方法匹配......”因为“IDataControl”不是从“Control”继承的。
我理解这个错误,我知道我可以做一些铸造,比如:
panel.Controls.Add( (Control)items[i] );
但是,我想知道是否有一种“更清洁”的方式来做到这一点,不需要强制转换,也有严格的类型验证。
那么,是否可以表明“IDataControl”只能由 Control 派生对象实现?
public interface IDataControl where this : Control
{
...
}
或者,是否可以声明一个类和一个接口的变量?
像这样的东西:
Control:IDataControl item;
List<Control:IDataControl> items;
谢谢