C#:自定义类的列表是另一个类的属性

时间:2009-10-03 06:06:42

标签: c# generics list

我有一个C#类来存储我的用户详细信息,另一个用于存储JOBS详细信息。场景就像每个用户可以拥有多个JOBS。我有UserId,UserName,Age等作为我的User类属性。现在我想将JOBS类对象与一个名为JOBS的属性相关联,这样我就可以将与该用户关联的多个作业存储为List。 如何在我的USerClass中编写属性? 。应该如何设定并获得?

4 个答案:

答案 0 :(得分:3)

public class User
{
 private List<Jobs> m_JobList = new List<Jobs>();

 public List<Jobs> JobList
 {
  get { return m_JobList; }
 }
}

尝试这样的事情。

答案 1 :(得分:1)

如果你想依赖抽象

public interface IUser
{
    IList<IJob> Jobs { get; set; }
}

public class User : IUser
{
    IList<IJob> Jobs { get; set; }  // Automatic properties C# >= 3

    public User(IList<IJob> jobs)
    {
        Jobs = jobs; 
    }
}

如果您不需要编制索引,只需将IList替换为ICollection,只需要计数并能够通过作业进行枚举。如果用户无法更改作业(不可变),请考虑ReadOnlyCollection<IJob>,方法是从界面中删除set;并将set;替换为类中的private set;

答案 2 :(得分:0)

另外两个想法;你可以使用C#3.0自动道具,但是你需要使用构造函数来做最初的set

class User {
    public List<Job> Jobs {get; private set;}
    public User() {
        Jobs = new List<Job>();
    }
}

也;如果你通过XmlSerializer使用xml序列化,那么属性(烦人地)需要有一个(public)setter(无论你是使用auto-props还是显式字段);在这方面咬牙切齿(同样,班级必须是public):

public class User {
    public List<Job> Jobs {get; set;}
    public User() {
        Jobs = new List<Job>();
    }
}

答案 3 :(得分:-2)

您还可以使用ArrayList,如下所示:

public class User
{
private ArrayList m_Jobs = new ArrayList();

 public ArrayList Jobs
 {
  get {return m_Jobs;}
 }
}