我有一个接口IDataControl:
public interface IDataControl
{
...
}
然后,我有一个变量为List< IDataControl>的类。
List<IDataControl> items;
问题是当我尝试在另一个表单或另一个控件的“Controls”属性中添加此集合的元素时:
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;
感谢