C# 在Windows Phone 8+应用程序中共享自定义词典的最佳策略
我需要在我的Windows Phone 8+应用程序中共享自定义对象的字典。 字典是在调用Rest Web服务后在启动时创建的,它不会被更新,它必须在某个页面上绑定数据,并从其他页面进行查询 我考虑在App.xaml.cs上实例化一个包含字典或直接包含字典的单例类 是否有更有效/更实用的策略?我相信最适合您的情况C# 在Windows Phone 8+应用程序中共享自定义词典的最佳策略,c#,windows-phone-8,windows-phone,windows-phone-8.1,C#,Windows Phone 8,Windows Phone,Windows Phone 8.1,我需要在我的Windows Phone 8+应用程序中共享自定义对象的字典。 字典是在调用Rest Web服务后在启动时创建的,它不会被更新,它必须在某个页面上绑定数据,并从其他页面进行查询 我考虑在App.xaml.cs上实例化一个包含字典或直接包含字典的单例类 是否有更有效/更实用的策略?我相信最适合您的情况 public sealed class MyDictionary<TKey,TValue> { private static volatile Dictionary
public sealed class MyDictionary<TKey,TValue>
{
private static volatile Dictionary<TKey, TValue> instance;
private static object syncRoot = new object();
public static Dictionary<TKey, TValue> Instance
{
get
{
lock (syncRoot)
{
if (instance == null)
{
instance = new Dictionary<TKey, TValue>();
}
}
return instance;
}
}
}
因为第二个add和第二个writeline与第一个不同。如果使用MVVM,另一个解决方案。 使用返回字典的属性创建服务类。 该类还有一个方法Initialize或DownloadData来填充字典,在appstart上调用它 与使用带有MVVM灯的IOC相比,您将使用SimpleIOC来定义服务类的实例,大多数IOC将始终返回“一个”实例化版本,换句话说,单例
MyDictionary<string, int>.Instance.Add("one", 1);
MyDictionary<string, int>.Instance.Add("one", 1);
MyDictionary<string, string>.Instance.Add("one", "apple");
Console.WriteLine(MyDictionary<string, int>.Instance["one"]);
Console.WriteLine(MyDictionary<string, string>.Instance["one"]);
1
apple