限制特定类的接口或将属性/声明限制为特定的类+接口

时间:2012-08-16 17:13:01

标签: inheritance interface strict

我有一个接口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;




感谢

0 个答案:

没有答案