2009-08-09 10 views
0

私はそれで接触要素とContacts.xmlを持ってこの方法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> 
    <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」でスタンプ、どのように私はそれを動作させるためにラインを変更する必要があり、このコードでcontact.csライン上

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; } 
} 

を、持っていますか? firstNamelastNameemail - -

答えて

8

あなたContactクラスのコンストラクタには3つの引数を必要としていますが引数なしでコンストラクタを呼び出すようにしようとすると、その後object initializer syntaxを使用してプロパティを設定しようとしています。

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

ありがとうございます、コードがコンパイルされました。 – user149169

0

私はあなたが接触してpublicコンストラクタが欠落していると思う:

はそれを修正するには、コンストラクタ自体に3つの引数を渡す必要があります。

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; } 
} 

既存のコンストラクタを使用してください。