其他分享
首页 > 其他分享> > 自定义用户控件使用相同的方法,以相同的方式调用它们

自定义用户控件使用相同的方法,以相同的方式调用它们

作者:互联网

因此,我在项目中制作了一堆用户控件,这些控件自动集成到系统中,以跟踪有关它们的某些信息.但是我不确定如何在不显得非常丑陋的情况下完成某个部分.

所有控件都从不同的控件类型(面板,文本框,组合框等)扩展而来,但是具有几种完全相同的方法.

我想做的是避免这种情况:

public void SendMyMessage(Control thisControl)
{
    if(thisControl is myPanel) (thisControl as myPanel).SendMessage();
    else if(thisControl is myComboBox) (thisControl as myComboBox).SendMessage();
    else if(thisControl is myTextbox) (thisControl as myTextbox).SendMessage();
    else if(thisControl is myLabel) (thisControl as myLabel).SendMessage();
}

宁愿有一个更简单的方法,让我在1行中调用它. (请注意,我正在调用的SendMessage()函数在不同的控件上执行不同的操作,但是不需要参数,并且以相同的方式调用)

解决方法:

我建议在所有控件中实现类似IMessageSender接口的东西.因此,您只有一张支票:

if (thisControl is IMessageSender)
  (thisControl as IMessageSender).SendMessage();

界面如下所示:

public interface IMessageSender
{
  void SendMessage();
}

标签:reflection,user-controls,c
来源: https://codeday.me/bug/20191101/1987156.html