Лучший способ, который я нашел для такого рода вещей, - это создать статический класс (называемый «Globals» или «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>();
Или:
Globals.AllCustomers = New List(Of Customer)
Конечно, такие глобальные переменные обычно не являются хорошей идеей, но иногда они являются самым простым решением.На мой взгляд, также было бы неплохо помещать их в классы, а не в модули VB.NET, поскольку это добавляет пространство имен к значению, а не помещает их в глобальное пространство имен.Это немного помогает с модульностью.
Если вы настаиваете на том, чтобы сделать это свойством App.Current, вам нужно привести App.Current к реальному классу, который вы создали, а именно:
var allCustomers = ((App)App.Current).AllCustomers;
Но я обычно избегаю добавлять такие виды свойств в мой класс App, потому что это затрудняет их тестирование и нарушает идею единой ответственности.