2009-08-09 3 views
0

나는이 방법C#, λ 식, 여기서 오류가 있습니까?

public static List<Contact> Load(string filename) 
    { 
     if (!File.Exists(filename)) 
     { 
      throw new FileNotFoundException("Data file could not be found", filename); 

     } 
     var contacts = 
      System.Xml.Linq.XDocument.Load(filename).Root.Elements("Contact").Select 
      (
       x => new Contact() { //errors out here, XXXXXX 
          FirstName = (string)x.Element("FirstName"), 
          LastName = (string)x.Element("LastName"), 
          Email = (string)x.Element("Email") 
         } 
      ); 
     return contacts.ToList();// is this line correct?, it should return List... 
    } 

내가 거기에 연락 요소와 Contacts.xml이에게 있습니다.

<Contacts> 
    <Contact> 
     <FirstName>Mike</FirstName> 
     <LastName>Phipps</LastName> 
     <Email>[email protected]</Email> 
    </Contact> 
    <Contact> 
     <FirstName>Holly</FirstName> 
     <LastName>Holt</LastName> 
     <Email>[email protected]</Email> 
    </Contact> 
    <Contact> 
     <FirstName>Liz</FirstName> 
     <LastName>Keyser</LastName> 
    </Contact> 
</Contacts> 

나는 내가 어떻게 그것이 작동되도록 할 수있는 라인을 변경해야합니다, 'XXXXXX'로 각인이 코드 라인에

public class Contact 
{ 
    public Contact(string firstName, string lastName, string email) 
    { 
     FirstName = firstName; 
     LastName = lastName; 
     Email = email; 
    } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string Email { get; set; } 
    public string PhoneNumber { get; set; } 
    public string Address { get; set; } 
} 

가진 contact.cs이? firstName, lastNameemail을 - -

답변

8

당신의 Contact 클래스의 생성자는 세 개의 인수가 필요하지만 당신은 인수가없는 생성자를 호출하려고 시도하고 object initializer syntax를 사용하여 속성을 설정하려는.

x => new Contact(
    (string)x.Element("FirstName"), 
    (string)x.Element("LastName"), 
    (string)x.Element("Email")); 
+0

덕분에 이제 코드가 컴파일됩니다. – user149169

0

난 당신이 연락 public 생성자를 놓치고 생각 :

이 문제를 해결하려면 생성자 자체에 세 가지 인수를 전달해야합니다.

public class Contact 
{ 
    public Contact() {} 

    public Contact(string firstName, string lastName, string email) { 
     FirstName = firstName; 
     LastName = lastName; 
     Email = email; 
    } 

    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string Email { get; set; } 
    public string PhoneNumber { get; set; } 
    public string Address { get; set; } 
} 

아니면 기존 생성자를 사용하십시오.