Fluent interfaces and inheritance in C#

后端 未结 7 1742
野性不改
野性不改 2020-11-30 21:09

I\'ll show a problem by example. There is a base class with fluent interface:

class FluentPerson
{
    private string _FirstName = String.Empty;
    private          


        
7条回答
  •  天命终不由人
    2020-11-30 21:49

     public class FluentPerson
     {
        private string _FirstName = String.Empty;
        private string _LastName = String.Empty;
    
        public FluentPerson WithFirstName(string firstName)
        {
            _FirstName = firstName;
            return this;
        }
    
        public FluentPerson WithLastName(string lastName)
        {
            _LastName = lastName;
            return this;
        }
    
        public override string ToString()
        {
            return String.Format("First name: {0} last name: {1}", _FirstName, _LastName);
        }
    }
    
    
       public class FluentCustomer 
       {
           private string _AccountNumber = String.Empty;
           private string _id = String.Empty;
           FluentPerson objPers=new FluentPerson();
    
    
    
           public FluentCustomer WithAccountNumber(string accountNumber)
           {
               _AccountNumber = accountNumber;
               return this;
           }
    
           public FluentCustomer WithId(string id)
           {
               _id = id;
               return this;
           }
    
           public FluentCustomer WithFirstName(string firstName)
           {
               objPers.WithFirstName(firstName);
               return this;
           }
    
           public FluentCustomer WithLastName(string lastName)
           {
               objPers.WithLastName(lastName);
               return this;
           }
    
    
           public override string ToString()
           {
               return objPers.ToString() + String.Format(" account number: {0}",  _AccountNumber);
           }
       }
    

    And invoke it using

      var ss = new FluentCustomer().WithAccountNumber("111").WithFirstName("ram").WithLastName("v").WithId("444").ToString();
    

提交回复
热议问题