如何从多个.cs文件访问类中的相同列表?

时间:2012-10-29 12:53:43

标签: c# wpf silverlight

我猜是一个相当简单的问题..我正在尝试访问公共类中的列表(只是我项目中的.CS文件。)。

在一个.xaml.cs中,我使用

访问该类
DataClass dataClass = new DataClass();

当我尝试在另一个.xaml.cs文件中访问它时,我使用了DataClass dataClass = new DataClass();再次。当然这会创建一个NEW类(所以存储在里面的所有信息都不存在。

如何在不创建新类的情况下访问类?

亲切的问候, 尼尔斯

3 个答案:

答案 0 :(得分:1)

您可以在DataClass中将列表设为static data member,并使方法从其他类访问它。静态数据成员是该类的所有实例的共享副本。如果列表应该由使用锁的不同线程访问,则可以使其成为并发列表。您可以将ConcurrentBag用于多线程环境。值得一读的singleton pattern通常用于类似情况。

 public class DataClass 
 { 
    public string Timestamp { get; set; }
    private static DataClass instance; 
    private DataClass() { }
    public static DataClass Instance 
    {
        get 
        {
            if(instance==null) 
            { 
                instance = new DataClass(); 
            } 
             return instance; 
        } 
    }  
}

public class Class1
{
     public void SetValue(string str)
     {
         DataClass ds = DataClass.Instance;
         ds.Timestamp  = "value1";
     }
}

public class Class2
{
     public string GetValue(string str)
     {
         DataClass ds = DataClass.Instance;
         return ds.Timestamp;
     }
}


Class1 c1 = new Class1();
c1.SetValue("hello");
Class2 c2 = new Class2();
string value = c2.GetValue();

答案 1 :(得分:0)

有一种名为Singleton的模式。我想它可以帮到你。

答案 2 :(得分:0)

使它成为一个只读属性,在第一次访问时实例化一个新实例,如下所示:

private DataClass dataClass;
public DataClass DataClass
{
    get
    {
        if(dataClass  == null)
        {
             dataClass = new DataClass();
        }
        return dataClass;
    }
}