获取/设置私有静态集合?

时间:2011-10-31 10:50:17

标签: c# .net list collections

我已经定义了一个具有以下属性的类:

 private ObservableCollection<Job> allJobs;

访问权限定义如下:

    public ObservableCollection<Job> AllJobs
    {
        get
        {
            return this.allJobs;
        }
        set
        {
            this.allJobs = value;
        }
    }

当我将整个ObservableCollection分配给属性时,get set工作正常,该set可以很好地检索它。但为什么我丢失了通常允许我“添加”的所有方法(即将1个作业添加到集合中)?

目前我不得不创建一个临时集合来填充然后分配给allJobs属性,我不应该这样做。

任何想法??

2 个答案:

答案 0 :(得分:4)

你对'迷失方法'的意思是什么?你试过AllJobs.Add()吗?以下代码适用于我:

void Main()
{
    AllJobs = new ObservableCollection<Job>();
    AllJobs.Add(new Job());
}

public class Job { }

private ObservableCollection<Job> allJobs;

public ObservableCollection<Job> AllJobs
{
    get
    {
        return this.allJobs;
    }
    set
    {
        this.allJobs = value;
    }
}

修改

根据您的评论,我修改了我的代码如下,但一切仍然适用于我,但我注意到您没有看到在任何地方初始化allJobs集合。

void Main()
{
    PresentationManager.Instance.AllJobs.Add(new Job());
}

public class Job { }

sealed class PresentationManager 
{ 
    public static readonly PresentationManager Instance = new PresentationManager(); 

    private PresentationManager()
    {
        allJobs = new ObservableCollection<Job>();
    }

    private ObservableCollection<Job> allJobs; 
    public ObservableCollection<Job> AllJobs 
    { 
        get { return this.allJobs; } 
        set { this.allJobs = value; } 
    } 
}

答案 1 :(得分:1)

通常你不想要这样一个属性的setter,因为你在使用setter时会丢失绑定到ObservableCollection的所有事件。

public ObservableCollection<Job> AllJobs { get; private set; }