2013-08-14 4 views
2

У меня возникли проблемы с исправлением ошибок в моей объектно-ориентированной программе на C#. Программа имеет 9 классов и в одном классе. Ошибка несогласованная доступность: тип параметра «Employee.Employee» является менее доступным, чем метод «Employee.EmployeeInput.CollectEmployeeInfo (Employee.Employee)» на кодированииC# Несогласованная ошибка доступности

public static void CollectEmployeeInfo(Employee theEmployee) 
    { 
     theEmployee.Firstname = InputUtilities.getStringInputValue("First Name"); 
     theEmployee.Lastname = InputUtilities.getStringInputValue("Last name"); 
     theEmployee.Gender = InputUtilities.getCharInputValue("Gender"); 
     theEmployee.Dependents = InputUtilities.getIntegerInputValue("# Dependents"); 
    } 

CollectEmployeeInfo что показывает ошибку и Я не уверен, что нужно сделать для других классов, чтобы исправить ошибку. Любая помощь будет принята с благодарностью

class Employee 
{ 
    public const double MIN_SALARY = 20000; 
    public const double MAX_SALARY = 100000; 
    public const int MIN_DEPENDENTS = 0; 
    public const int MAX_DEPENDENTS = 10; 
    public const string DEFAULT_NAME = "not given"; 
    public const char DEFAULT_GENDER = 'U'; 
    public const string DEFAULT_TYPE = "Generic Employee"; 

    protected string firstName; 
    protected string lastName; 
    protected double annualSalary; 
    protected char gender; 
    protected int dependents; 
    protected static int numEmployees = 0; 
    protected Benefits employeeBenefits; 
    protected string employeeType; 

    public Employee() 
    { 
     firstName = DEFAULT_NAME; 
     lastName = DEFAULT_NAME; 
     annualSalary = MIN_SALARY; 
     dependents = MIN_DEPENDENTS; 
     numEmployees++; 
     employeeBenefits = new Benefits(); 
    } 
    public Employee(string firstname, string lastname, char gender, int dependents, double annualsalary, Benefits employeeBenefits) 
    { 
     Firstname = firstname; 
     Lastname = lastname; 
     AnnualSalary = annualsalary; 
     Gender = gender; 
     Dependents = dependents; 
     EmployeeBenefits = employeeBenefits; 
     numEmployees++; 
    } 
    public Benefits EmployeeBenefits 
    { 
     get { return employeeBenefits; } 
     set 
     { 
      if (value == null) 
       employeeBenefits = new Benefits(); 
      else 
       employeeBenefits = value; 
     } 
    } 
    public Employee(string employeeType) 
     : this() 
    { 
     EmployeeType = employeeType; 
    } 
    public string Firstname 
    { 
     get { return firstName; } 
     set 
     { 
      if (String.IsNullOrEmpty(value)) 
       firstName = DEFAULT_NAME; 
      else 
       firstName = value; 
     } 
    } 
    public string Lastname 
    { 
     get { return lastName; } 
     set 
     { 
      if (String.IsNullOrEmpty(value)) 
       lastName = DEFAULT_NAME; 
      else 
       lastName = value; 
     } 
    } 
    public double AnnualSalary 
    { 
     get { return annualSalary; } 
     set 
     { 
      if (value > MIN_SALARY & value < MAX_SALARY) 
       annualSalary = value; 
      else if (value < MIN_SALARY) 
       annualSalary = MIN_SALARY; 
      else 
       annualSalary = MAX_SALARY; 
     } 
    } 
    public char Gender 
    { 
     get { return gender; } 
     set 
     { 
      if (value == 'F') 
       gender = value; 

      else if (value == 'f') 
       gender = value; 

      else if (value == 'M') 
       gender = value; 

      else if (value == 'm') 
       gender = value; 

      else 
       gender = DEFAULT_GENDER; 
     } 
    } 
    public int Dependents 
    { 
     get { return dependents; } 
     set 
     { 
      if (value >= MIN_DEPENDENTS & value <= MAX_DEPENDENTS) 
       dependents = value; 
      else if (value < MIN_DEPENDENTS) 
       dependents = MIN_DEPENDENTS; 
      else 
       dependents = MAX_DEPENDENTS; 
     } 
    } 
    public static int NumEmployees 
    { 
     get { return numEmployees; } 
    } 
    public string EmployeeName 
    { 
     get { return firstName + " " + lastName; } 
    } 
    public string EmployeeType 
    { 
     get { return employeeType; } 
     set 
     { 
      if (String.IsNullOrEmpty(value)) 
       employeeType = DEFAULT_TYPE; 
      else 
       employeeType = value; 
     } 
    } 
    public double CalculatePay() 
    { 
     return annualSalary/52; 
    } 
    public double CalculatePay(double modifiedSalary) 
    { 
     AnnualSalary = modifiedSalary; 
     return AnnualSalary/52; 
    } 
    public override string ToString() 
    { 
     string output; 

     output = "\n============ Employee Information ============"; 
     output += "\n\t   Type:\t" + employeeType; 
     output += "\n\t   Name:\t" + firstName + " " + lastName; 
     output += "\n\t  Gender:\t" + gender; 
     output += "\n\t Dependents:\t" + dependents; 
     output += "\n\tAnnual Salary:\t" + annualSalary.ToString("C2"); 
     output += "\n\t Weekly Pay:\t" + CalculatePay().ToString("C2"); 
     output += "\n\t" + employeeBenefits.ToString(); 

     return output; 
    } 
} 

}

+1

Возможный дубликат [Что такое несогласованная ошибка доступности?] (Http://stackoverflow.com/questions/14625023/what-is-inconsistent-accessibility-error) – shf301

+0

Этот метод должен быть «статическим»? –

+1

Если вы не добавили ничего перед классом, он [по умолчанию 'internal' not' public'] (http://msdn.microsoft.com/en-us/library/ms173121.aspx). –

ответ

1

Все типы, которые нужно передать в метод должен быть по крайней мере, максимально доступной этого метода. Если Employee является частным или внутренним классом, он не может быть передан этому методу извне этого класса/сборки.

Сделать Employee общественным и он должен работать.

+0

Класс Employee является общедоступным. Есть только 8 переменных, которые защищены, такие как First Name, Lastname, Gender и Dependents. – Jess

+0

@Jess затем скопируйте код Employee на ваш оригинальный пост и подтвердите это, потому что ваша ошибка говорит, что это не так. –

+0

@Jess Вот что вам сообщает сообщение об ошибке: «Employee.Employee» менее доступен, чем [public] '. Может быть, проверьте, нет ли другого класса 'Employee', определенного где-то, что вместо этого использует компилятор? – TheEvilPenguin

2

Employee типа должно быть не менее доступным, чем CollectEmployeeInfo.

Так Employee должен быть определен как public «по крайней мере»

Смежные вопросы