0

かなり単純な質問だと思います。パブリッククラスのリストにアクセスしようとしています(プロジェクトの.CSファイルのみ)。

1つの.xaml.csで、次を使用してクラスにアクセスします

DataClass dataClass = new DataClass();

他の.xaml.csファイルでアクセスしようとすると、DataClass dataClass = new DataClass();を使用しました。また。もちろん、これによりNEWクラスが作成されます(したがって、内部に格納されているすべての情報がそこにあるわけではありません。

新しいクラスを作成せずにクラスにアクセスするにはどうすればよいですか?

よろしく、ニールズ

4

3 に答える 3

1

リストを DataClass の静的データ メンバーにして、他のクラスからアクセスするメソッドを作成できます。静的データ メンバーは、そのクラスのすべてのインスタンスの共有コピーです。ロックを使用して異なるスレッドがリストにアクセスすることが想定されている場合は、同時リストにすることができます。マルチスレッド環境ではConcurrentBagを使用できます。同様の状況でよく使用されるシングルトン パターンを読む価値があります。

 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();
于 2012-10-29T12:55:03.447 に答える
0

シングルトンというパターンがあります。私はそれがあなたを助けることができると思います.

于 2012-10-29T12:58:28.907 に答える
0

次のように、最初のアクセス時に新しいインスタンスをインスタンス化する読み取り専用プロパティにします。

private DataClass dataClass;
public DataClass DataClass
{
    get
    {
        if(dataClass  == null)
        {
             dataClass = new DataClass();
        }
        return dataClass;
    }
}
于 2012-10-29T13:40:34.290 に答える