如何使用两种不同形式的相同方法?

时间:2014-08-19 23:04:41

标签: c# winforms parameters

澄清一下:我有两种在Controller中使用相同方法的表单,我想知道如何使用相同的代码行而不是复制和粘贴方法,并为每种方法使用不同的参数。

EG。我现在拥有的:

public static void PopulateOriginCombo(CableID_QueryView QView)
{
    if (QView.cmbAreaCode.Text != "")
    {
       //Code...
    }
}

public static void PopulateOriginCombo(CableID_CreateView CView)
{
    if (CView.cmbAreaCode.Text != "")
    {
       //Code...
    }
}

我能否以某种方式将每个表单的参数合并为一个?

3 个答案:

答案 0 :(得分:2)

由于您要避免继承,请创建一个接口:

interface IHasOriginCombo
{
    ComboBox cmbAreaCode { get; }
}

然后,在您的类声明中,添加接口:

class CableID_QueryView : Form, IHasOriginCombo { //...

class CableID_CreateView : Form, IHasOriginCombo { //...

然后:

public static void PopulateOriginCombo(IHasOriginCombo view)
{
    if (view.cmbAreaCode.Text != "")
    {
       //Code...
    }
}

答案 1 :(得分:2)

您不需要使用继承来执行此操作。创建另一个包含方法的类并返回对象列表,然后在不同的表单上使用它。

public class Origin
{
    public string originName { get; set; }

    public static List<Origin> PopulateOriginCombo(CableID_QueryView QView)
    {
        if (QView.cmbAreaCode.Text != "")
        {
           //Code...
        }
    }

    public static List<Origin> PopulateOriginCombo(CableID_CreateView CView)
    {
        if (CView.cmbAreaCode.Text != "")
        {
           //Code...
        }
    }
}

然后在您的表单中,将其称为:

combo1.DataSource = Origin.PopulateOriginCombo(test);
combo1.DisplayMember = "originName";

起初使用对象很难,但最终你会发现操作更容易。

答案 2 :(得分:0)

如何创建具有此方法的类,而不是调用此方法:

public static string PopulateOriginCombo(CableID_CreateView CView)
{
   if(CView != null)
   {
       if (CView.cmbAreaCode.Text != "")
      {
         return CView.Text ;
      }
  }

  return string.Empty;
}

而不仅仅是从该类创建对象并调用此方法并将CView传递给它:

SomeClass classObject = new SomeClass();
string value = classObject.PopulateOriginCombo(this.CView);