澄清一下:我有两种在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...
}
}
我能否以某种方式将每个表单的参数合并为一个?
答案 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);