У меня есть класс со следующим методом.
public cIPLink(int paramCaseNo, int paramIPID, string paramIPReference, int paramContactID)
{
this.cLinkDate = DateTime.Now;
this.cCaseNo = paramCaseNo;
this.cIPID = paramIPID;
this.cIPReference = paramIPReference;
this.cContactID = paramContactID;
string strConnect = BuildConnectionString();
SqlConnection linkToDB = new SqlConnection(strConnect);
linkToDB.Open();
string sqlStat = "INSERT INTO tblIPLinks (LinkID, LinkDate, CaseNo, IPID, ContactID, IPReference)" +
"VALUES (@LinkID, @LinkDate, @CaseNo, @IPID, @ContactID, @IPReference);";
SqlCommand sqlCom = new SqlCommand(sqlStat, linkToDB);
sqlCom.Parameters.Add("@LinkID", SqlDbType.Int);
sqlCom.Parameters.Add("@LinkDate", SqlDbType.Date);
sqlCom.Parameters.Add("@CaseNo", SqlDbType.Int);
sqlCom.Parameters.Add("@IPID", SqlDbType.Int);
sqlCom.Parameters.Add("@ContactID", SqlDbType.Int);
sqlCom.Parameters.Add("@IPReference", SqlDbType.Text);
this.cLinkID = NextLinkID();
sqlCom.Parameters["@LinkID"].Value = this.cLinkID;
sqlCom.Parameters["@LinkDate"].Value = this.cLinkDate;
sqlCom.Parameters["@CaseNo"].Value = this.cCaseNo;
sqlCom.Parameters["@IPID"].Value = this.cIPID;
sqlCom.Parameters["@ContactID"].Value = this.cContactID;
sqlCom.Parameters["@IPReference"].Value = this.cIPReference;
sqlCom.ExecuteNonQuery();
linkToDB.Close();
}
Однако я хочу сделать это немного более гибким. Иногда, когда вызывается метод, я хочу удалить поле IPID, а иногда я хочу удалить поле ContactID. Теперь я подумал о копировании и вставке этого кода и наличии трех методов перегрузки; один только с IPID, один с только ContactID и третий с обоими полями, но я уверен, что должен быть аккуратный способ делать то, что я хочу.
Есть идеи?