我正在开发一个实用程序,该实用程序将具有“过滤器”接口以及该接口的许多实现。部分接口将返回一个类型为 Control 的对象,该对象将在 UI 中用于操作过滤器。
我希望能够要求返回的控件也实现另一个接口,以便我可以执行诸如请求控件写回创建它们的对象之类的事情。
现在我的代码看起来像:
public interface IFilter
{
Control Control();
}
我想要一些像:
public interface IFilterControl
{
...
}
public class FilterControl : Control, IFilterControl{}
public interface IFilter
{
...
FilterControl Control();
}
以上不起作用,因为FilterControl实际上并没有实现IFilterControl。
如果以上内容不够清楚,请尝试想象想象中的关键字“实现”如何在下面工作
public interface IFilterControl
{
IFilter Filter{get;}
}
public interface IFilter
{
Control implmenting IFilterControl Control();
}
public interface FilterImpl : IFilter
{
Control implmenting IFilterControl Control(){
return new FilterControlImpl(this);
}
}
public partial class FilterImplControl : UserControl, IFilterControl
{
FilterImpl filter;
public FilterImplControl(FilterImpl filter)
{
this.filter = filter;
}
public IFilter Filter{get{return filter;}}
}
FilterImpl a_filter = GetAFilter();
Control implmenting IFilterControl ctl = a_filter;
panel.Controls.Add(ctl);
FilterImpl the_filter_indirectly = ctl.Filter;