65.9K
CodeProject 正在变化。 阅读更多。
Home

应用程序数据实用程序类

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2002年4月28日

1分钟阅读

viewsIcon

72872

downloadIcon

207

ApplicationData是一个用于管理应用程序数据的通用实用程序库类。

引言

本文介绍了一个名为 ApplicationData 的类,它简化了应用程序的数据管理。

根据“为 Windows XP 设计规范 v2.3”,您应该将应用程序数据分类为以下几类:

  • 每个用户,漫游
  • 每个用户,非漫游
  • 每个计算机(非用户特定且非漫游)
注意:这三个类别在此处分别命名为:User(用户)、LocalUser(本地用户)和 Common(通用)。

了解为每个类别存储文件和注册表设置的位置可能很复杂,并且需要重复代码。这个实用类试图简化这个过程。此外,规范要求应用程序数据应存储在

[company name]\[product name]\[version]

所需的信息是从程序集属性中提取的(例如 AssemblyCompanyAttribute),因此强烈建议在使用此实用程序时填写适当的属性(通常在 AssemblyInfo.cs 中)。

示例位置

  • C:\Documents and Settings\All Users\Application Data\My Company\My Product\1.0.840.34747\Sub1\Sub2\My File.txt
  • "HKEY_CURRENT_USER\Software\My Company\My Product\1.0.840.34747\Local\Sub1\Sub1"

使用示例

// Working with files: 
		
FileInfo file = ApplicationData.LocalUser["Sub1"]["Sub2"].GetFile("file.txt"); 
StreamWriter writer = file.CreateText(); 
writer.WriteLine("This is a test of ApplicationData!"); 
writer.Close(); 
		
// Working with the registry:
 
RegistryKey key = ApplicationData.LocalUser["Sub1"]["Sub2"].GetRegistryKey(); 
key.SetValue("Test", "This is a test!");

此实用程序库中使用的类包括

System.Windows.Forms.Application,它具有非常有用的属性,例如:Application.LocalUserAppDataPathApplication.CommonAppDataRegistry 等...

System.WeakReference,它用于存储三个静态根实例(Common、LocalUser 和 User)的引用。通过使用弱引用,我不需要每次需要时都重新创建实例,并且如果未使用它们,它们可以被垃圾回收。(有关实现,请参见 ApplicationData.GetAppDataByType()


我希望这个实用程序对您有所帮助!如果您有任何意见或建议,我将不胜感激!
© . All rights reserved.