我有一个通用列表,在首次使用某个视图时会加载。现在我需要从项目中的所有视图访问此列表。
我一直在尝试在App类中使用Public Property。问题是,我似乎无法从其他类/视图代码访问该属性(尝试App.Current)。
如何访问App类中定义的公共属性通用列表?
这是在VB中。
感谢。
答案 0 :(得分:1)
我发现做这种事情的最好方法是创建一个静态类(称为“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类中,因为这会让他们更难测试并打破单一责任的想法。