私はこのようなことをするために見つけた最良の方法は静的なクラス( "グローバル"または "Config"などと呼ばれる)を作成し、あなたがしたいリストを含む静的プロパティを作成することです参照。
public static class Globals
{
public static List<Customer> AllCustomers {get; set; }
}
またはVB.NETで:だから、このようなものに見えるかもしれません
Private Shared m_AllCustomers as List(of Customer)
Public Shared Property AllCustomers As List(of Customer)
Get
Return m_AllCustomers
End Get
Set(ByVal Value as List(of Customer))
m_AllCustomers = Value
End Set
End Property
をそして、あなたはその後、設定/取得することができ、あなたがそれを必要な場所からプロパティ:
Globals.AllCustomers = new List<Customer>();
Or:
Globals.AllCustomers = New List(Of Customer)
もちろん、グローバルこのようなものは一般的には素晴らしいアイデアではありませんが、時には最も簡単な解決策です。私の意見では、VB.NETモジュールではなくクラスに入れることも良い考えです。グローバルな名前空間に入れるのではなく、値に名前空間を追加するからです。これはモジュール性に少し役立ちます。
あなたはこのApp.Currentの財産作りを主張した場合、あなたはつまり、あなたが作成した実際のクラスにApp.Currentをキャストする必要があります。
var allCustomers = ((App)App.Current).AllCustomers;
しかし、私は、一般的にこれらの種類のことを避けるため、プロパティをテストするのが難しくなり、Single Responsibilityのアイデアが壊れるため、Appクラスのプロパティを変更する必要があります。
私はVBで静的クラスがVBに存在しないと思うので、単純なモジュールでこれを行うことができることに気づいた。しかし、あなたの答えは、私がこれ以上調べてくれました。 – mraviator
私はVB.NETでクラスを静的にすることはできませんが、クラスメンバーは以下のように思います:しかし、キーワードは "静的ではなく" "共有"です。私は私の答えを更新します。 –