2012-03-05 83 views
2

全部 -实例化列表<I>动态

我想动态(在运行时)要创建一个人收藏其中有3个属性 - 名称,技能和地址的集合。

我面临的问题是我不能在实例化时在下面的行中添加地址。

people.Add(new Person() { Name = "John Smith", Skillset = "Developer", _________ }); 

所以基本上我如何结合这3个行成1,所以我可以在上面通过它:

Person per = new Person(); 
per.Complete_Add = new List<Address>(); 
per.Complete_Add.Add(new Address("a", "b")); 

这里是我的全部程序:

class Program 
{ 
    static void Main(string[] args) 
    { 
     PersonViewModel personViewModel = new PersonViewModel(); 
    } 
} 

public class Person 
{ 
    public string Name { get; set; } 
    public string Skillset { get; set; } 
    public List<Address> _address; 
    public List<Address> Complete_Add 
    { 
     get { return _address; } 
     set { _address = value; } 
    } 
} 

public class Address 
{ 
    public string HomeAddress { get; set; } 
    public string OfficeAddress { get; set; } 

    public Address(string _homeadd, string _officeadd) 
    { 
     HomeAddress = _homeadd; 
     OfficeAddress = _officeadd; 
    } 

} 

public class PersonViewModel 
{ 
    public PersonViewModel() 
    { 
     people = new List<Person>(); 
     Person per = new Person();     \\Dont want to do this 
     per.Complete_Add = new List<Address>();  \\Dont want to do this 
     per.Complete_Add.Add(new Address("a", "b")); \\Dont want to do this 
     people.Add(new Person() { Name = "John Smith", Skillset = "Developer", Complete_Add = per.Complete_Add }); 
     people.Add(new Person() { Name = "Mary Jane", Skillset = "Manager" }); 
     people.Add(new Person() { Name = null, Skillset = null }); 
    } 

    public List<Person> people 
    { 
     get; 
     set; 
    } 
} 

回答

3

,您仍然可以做到这一点通过房产Initialisers

people.Add(new Person() { Name = "John Smith", Skillset = "Developer", 
     Complete_Add = new List<Address> 
     { 
      new Address("a", "b") 
     }}); 
+0

谢谢大家 - 属性initialisers作品 - 其括号{}这是我失踪了。真的很感谢这里的帮助 – Patrick 2012-03-05 21:38:21

2

我相信这就是构造是给。创建一个Person的构造函数,并根据您的需要初始化属性。

0

你应该做的constructors你的初始化:

public class Person 
{ 
    public Person() 
    { 
     this._address = new List<Address>(); 
     this.Complete_Add = new List<Address>(); 
    } 
    public string Name { get; set; } 
    public string Skillset { get; set; } 
    public List<Address> _address; 
    public List<Address> Complete_Add 
    { 
     get { return _address; } 
     set { _address = value; } 
    } 
} 
1

这是不是工作:

Person per = new Person() { Complete_Add = new List<Address>() { new Address("a", "b") } }; 

1

你也可以有你的财产实例列表,如果它是不是已经

private List<Address> _address; 
public List<Address> Complete_Add 
{ 
    get { return _address = _address ?? new List<Address>(); } 
}