Требуется доступ к глобальному общему списку во всех представлениях Silverlight - PullRequest
0 голосов
/ 26 января 2011

У меня есть общий список, который загружается при первом использовании определенного представления.Теперь мне нужен этот список для доступа ко всем представлениям в моем проекте.

Я экспериментировал с использованием Public Property в классе App.Проблема в том, что я не могу получить доступ к этому свойству из других кодов классов / представлений (попробуйте App.Current).

Как получить доступ к универсальному списку открытых свойств, определенному в классе App?* Это в VB.

Спасибо.

1 Ответ

1 голос
/ 26 января 2011

Лучший способ, который я нашел для такого рода вещей, - это создать статический класс (называемый «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, потому что это затрудняет их тестирование и нарушает идею единой ответственности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...