【问题标题】:Using two instances of a custom method results in 'call is ambiguous'使用自定义方法的两个实例会导致“调用不明确”
【发布时间】:2013-04-16 03:06:35
【问题描述】:

我在编译代码时遇到问题,我从编译器收到以下错误:

以下方法或属性之间的调用不明确:'ActionTracker.DataAccess.GetSpecialtyCode(string)' 和 ActionTracker.DataAccess.GetSpecialtyCode

我只是在新方法中再次使用我的自定义方法。我以与此完全相同的方式使用了另一种方法,并且没有出现任何歧义错误。请问有人可以帮忙吗?我是n00b :D

namespace ActionTracker
{
  using ...
   internal class DataAccess
   { 
     internal static string GetSpecialtyCode(string name)
     {
         OleDbConnection speccconn = SetUpConnection();
         speccconn.Open();
         OleDbCommand specccmd = new OleDbCommand("SELECT Specialty_Code FROM tbl_specialty WHERE Specialty_Description = @Specialty_Description", speccconn);

         specccmd.Parameters.Add("@Specialty_Description", OleDbType.VarWChar, 255).Value = name;

         string code = (string)specccmd.ExecuteScalar();
         speccconn.Close();
         return code;
     }

     internal static string AddVisitSpecialty(string trust_name, DateTime visit_date, string visit_type, List<string> specialties)
     {
          int visit_id = GetVisitID(trust_name, visit_date, visit_type);
          OleDbConnection visitspeccon = SetUpConnection();
          visitspeccon.Open();

          foreach (string element in specialties)
          {
            string specialty_code = new GetSpecialtyCode(element);
            OleDbCommand visitspeccmmd = new OleDbCommand("INSERT INTO tbl_visit_specialty (Visit_ID, Visit_Specialty) VALUES"
            + "(@visit_id, @visit_specialty)", visitspeccon);
            visitspeccmmd.Parameters.Add("@visit_id", OleDbType.Numeric).Value = visit_id;
            visitspeccmmd.Parameters.Add("@visit_specialty", OleDbType.VarWChar, 255).Value = specialty_code;
            visitspeccmmd.ExecuteNonQuery();

           }

           visitspeccon.Close();

           string message = "Specialty(s) added to visit";
           return message;
     }

     internal static string DeleteVisitSpecialty(int visit_id, List<string> specialty_list)
     {
         OleDbConnection delvscon = SetUpConnection();
         delvscon.Open();     
         List<string> specialty_codes = new List<string>();

        foreach (string element in specialty_list)
        {
            string specialty_code = GetSpecialtyCode(element);            
            OleDbCommand delvscmd = new OleDbCommand("DELETE FROM tbl_visit_specilaty WHERE Visit_ID = @visit_id AND Visit_Specialty = @visit_specialty", delvscon);
            delvscmd.Parameters.Add("@visit_id", OleDbType.Numeric).Value = visit_id;
            delvscmd.Parameters.Add("@visit_specialty", OleDbType.VarWChar, 255).Value = specialty_code;
            delvscmd.ExecuteNonQuery();
        }

         delvscon.Close();
         string message = "Specialty(s) deleted";
         return message;
      }
   }
}

【问题讨论】:

  • 您是否有一个名为GetSpecialtyCode 或类似名称的属性
  • 你在两个不同的地方定义了GetSpecialtyCode
  • 而另一个定义不在您复制的这段代码中。
  • 我没有任何属性
  • 在整个解决方案中选择 MatchCase 选项的“GetSpecialtyCode”文件中查找。

标签: c#


【解决方案1】:

我认为您的问题是这一行(来自 AddVisitSpecialty):

string specialty_code = new GetSpecialtyCode(element);

看看如果你删除那个新的会发生什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    相关资源
    最近更新 更多