2017-03-12 34 views
-1
using System; 

namespace lab4 
{ 
    class Lab4 
    { 
     static void Main(string[] args) 
     { 
      Prompt.prompt(); 
     } 
    } 
} 

public class CommissionEmployee 
{ 
    public string FirstName { get; } 
    public string LastName { get;} 
    public string SSN { get;} 
    private decimal grossSales; 
    private decimal commissionRate; 




     public CommissionEmployee(string firstName, string lastName, string ssn, decimal grossSales, decimal commissionRate) 
    { 
     FirstName = firstName; 
     LastName = lastName; 
     GrossSales = grossSales; 
     CommissionRate = commissionRate;//might be wrong 


    } 

    public decimal GrossSales 
    { 
     get 
     { 
      return grossSales; 
     } 
     set 
     { 
      if (value < 0) 
      { 
       throw new ArgumentOutOfRangeException(nameof(value), 
       value, $"{nameof(GrossSales)} must be >=0"); 
      } 


      grossSales = value; 
     } 
    } 

    public decimal CommissionRate 
    { 
     get 
     { 
      return commissionRate; 
     } 
     set 
     { 
      if (value <=0 || value >=1) 
      { 
       throw new ArgumentOutOfRangeException(nameof(value), 
       value, $"{nameof(CommissionRate)} must be > 0 and <1"); 
      } 
      grossSales = value; 
     } 



    } 

    public virtual decimal Earnings() => CommissionRate * GrossSales; 



} 


public class Plumber : CommissionEmployee 
{ 

    private string custName; 
    private string Location; 

    public Plumber(string firstName, string lastName, string ssn, decimal grossSales, decimal commissionRate, string custName, string location) : 
     base (firstName, lastName, ssn, grossSales, commissionRate) 
    { 

     custName = CustName; 
     Location = location; 

    } 

    public string CustName 
    { 
     get 
     { 
      return custName; 
     } 
     set 
     { 
      CustName = value; 
     } 
    } 
    public string location 
    { 
     get 
     { 
      return Location; 
     } 
     set 
     { 
      location = value; 
     } 
    } 



    public override decimal Earnings() => GrossSales * CommissionRate; 

    public override string ToString() => 
     $"Name: {FirstName} {LastName}/n" + 
     $"Social Security Number: {SSN}/n" + 
     $"Sales: {GrossSales}/n" + 
     $"Rate of Commission: {CommissionRate}/n" + 
     $"Customer Name: {CustName}/n" + 
     $"Location of Service: {Location}/n" + 
     $"Earnings: {Earnings()}/n"; 



} 

public class Prompt 
{ 

    public static void prompt() 
    { 

     Plumber Plumber1 = new Plumber(); 
     Console.WriteLine("Please enter the plumber's first name: "); 
     string first = Console.ReadLine(); 
     Plumber1.CustName = first; 


    } 
} 

}沒有給出說法,對應於所需參數管道工

它不會讓我沒有在參數填充創建一個新的管道工對象。但是,這項任務試圖讓我提示用戶輸入這些屬性。它不會讓我用空parameters.Error CS7036

+0

你有兩個選擇之間進行選擇:固定'Plumber'類,以便它有一個參數的構造函數像你想打電話,或者停止嘗試調用一個不存在的無參數構造函數。 –

回答

0
Plumber Plumber1 = new Plumber(); 

這是調用默認的構造函數,但你的管道工類沒有默認的構造函數(無參數)。在管道工唯一的構造函數重載的構造:

public Plumber(string firstName, string lastName, string ssn, decimal grossSales, decimal commissionRate, string custName, string location) : 

如果要做到這一點,你需要一個默認的構造函數添加到管道工,但水暖工從CommissionEmployee其中只有一個非默認的構造函數繼承,從而它現在存在,Plumber的任何構造函數都必須調用基類CommissionEmployee的非默認構造函數。所以,你可能要一個默認的構造函數添加到CommisionEmployee:

public CommissionEmployee() {} 
... 
public Plumber() : base() {} 
相關問題