看看是否有类型的东西

Pro*_*kie 0 c# types class

我试图检查c#中是否有某种类型的类.它会在表单上打印出某些标签,具体取决于它的类型.这是我到目前为止所做的,它适用于"if"语句.但是,我收到"无法转换类型对象"的错误.在这种情况下是否可以使用if-else语句?

public void ShowStaffData(string pName)
{
  //Gets Staff Details from the name slected int he list box in the form
  people.CreatePeople();
  var currentPerson = 
    people.person.Where(p => p.Forename + " " + p.Surname == pName);

  // How the info is printed out if person selected in 
  // a member of Accademic Staff
  AccademicStaff accademic = currentPerson as AccademicStaff;

  if (currentPerson!=null)
  {
    foreach (AccademicStaff accStaff in currentPerson)
    {
      label9.Text = accStaff.Forename + " " + accStaff.Surname;
      label10.Text = accStaff.IdentificationNumber.ToString();
      label11.Text = accStaff.DateOfBirth;
      label12.Text = accStaff.Address;
      label13.Text = accStaff.Office;
      label14.Text = accStaff.School;
      label15.Text = accStaff.ModuleLeaderOf;
      label16.Text = accStaff.ProgramLeaderOf;
    }
  }      
  else
  {
    // How the info is printed out if person selected in 
    // a member of Admin Staff

    foreach (AdminStaff admin in currentPerson)
    {
      label9.Text = admin.Forename + " " + admin.Surname;
      label10.Text = admin.IdentificationNumber.ToString();
      label11.Text = admin.DateOfBirth;
      label12.Text = admin.Address;
      label13.Text = admin.Office;
      label6.Text = "Job Role";
      label14.Text = admin.JobRole;
      label7.Dispose();
      label8.Dispose();
      label15.Dispose();
      label16.Dispose();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Guf*_*ffa 7

首先,currentPersion是一个项目的集合.使用该Single方法使其成为单个项目:

var currentPerson =
  people.person.Where(p => p.Forename + " " + p.Surname == pName).Single();
Run Code Online (Sandbox Code Playgroud)

(如果你可能根本没有匹配,你会使用SingleOrDefault然后检查是否currentPersion为null.)

其次,在尝试强制转换后,您正在检查currentPerson变量而不是accademic变量:

AccademicStaff accademic = currentPerson as AccademicStaff;
if (accademic != null)
Run Code Online (Sandbox Code Playgroud)

现在你也不需要循环.使用accademic第一部分中的变量,并将引用转换AdminStaff为第二部分:

AdminStaff admin = currentPerson as AdminStaff;
Run Code Online (Sandbox Code Playgroud)

  • 这就是为什么这个家伙代表220K + (2认同)