Home > Software design >  Assign string[] array field to another array field of same type c#
Assign string[] array field to another array field of same type c#

Time:09-16

I have two classes defined in my solution

public class Registration {
    [...]
    public list<Account> Accounts {get; set;}
}

public class Account {
    [...]       
    public string Code { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
}

In the web service that I am consuming, the following class definitions are available

public partial class VendReg {
    [...]
    private Payment_Details[] requestDetailsField;
    
    [System.Xml.Serialization.XmlArrayItemAttribute(IsNullable=false)]
    public Payment_Details[] RequestDetails {
        get {
            return this.requestDetailsField;
        }
        set {
            this.requestDetailsField = value;
        }
    }       
}


public partial class Payment_Details {
          
    private string bk_CodeField;
    
    private string bk_NameField;
    
    private string bk_AddressField;
                         
    public string Bk_Code {
        get {
            return this.bk_CodeField;
        }
        set {
            this.bk_CodeField = value;
        }
    }
    
    public string Bk_Name {
        get {
            return this.bk_NameField;
        }
        set {
            this.bk_NameField = value;
        }
    }
    
    public string Bk_Address {
        get {
            return this.bk_AddressField;
        }
        set {
            this.bk_AddressField = value;
        }
    }         
}

I want to assign Account to Request Details which is an array of Payment_Details. I tried this code below vendReg.RequestDetails = registration.Accounts.Cast<Payment_Details>().ToArray();

I got invalid cast exception: Unable to cast object of type 'Account' to type 'Payment_Details'

Please guide on what I am not doing right

CodePudding user response:

You need to convert this yourself (or you can look into things like Automapper)

vendReg.RequestDetails = registration.Accounts.Select(acc => 
   new Payment_Details {
      Bk_Code = acc.Code,
      Bk_Name = acc.Name,
      Bk_Address = acc.Address
   }).ToArray();
  • Related