执行之间的常量数据
Posted
技术标签:
【中文标题】执行之间的常量数据【英文标题】:Constant Data between executions 【发布时间】:2011-04-13 18:17:11 【问题描述】:我有一个使用我制作的 DLL 的 C# 应用程序,我必须在 DLL 中存储 3 个必须保持不变的变量,以便即使在用户关闭程序后我也可以稍后获取它们(我需要在每次执行时获取它们在我将数据写入 DLL 之后)。我想将它们存储在 DLL 中,因为我不想使用注册表或使用任何外部文件,所以我正在考虑使用 DLL 中的资源文件来读取/写入我的静态数据。
谁能给我一个示例,说明如何使用这样的资源数据,或者建议另一种方法来做到这一点,而无需声明硬编码变量(我不能这样做),或使用注册表/外部数据文件来存储信息。
【问题讨论】:
【参考方案1】:我建议使用Isolated storage 来写入您的数据。您可以快速入门here。
【讨论】:
哇——好发现!喜欢这种指针。 (坦率地说,我有一种感觉我会远离这个,但那是我在编写可移植代码,我想)【参考方案2】:使用常规的内存映射文件。写入二进制可执行文件是不好的做法,除了最混杂的安全策略设置之外,许多(如果不是全部)操作系统将禁止这样做。
PS。这种存储的流行术语是“数据库”(或程序数据库)。这应该可以帮助您获得一些谷歌点击率。
此外,根据您喜欢的实现方法,您可以使用内存映射来覆盖您的数据段(这样您就可以吃到蛋糕了:将全局静态数据保留在它所在的位置和 轻松将它们提交到磁盘)。不过,这更符合 C/C++ 精神。
在 .NET 中,您必须使用巨大的自定义布局结构(意思是,所有引用类型都不存在 - 这在 C# 中比在 C++ 中更不自然)
因此,您最好的选择可能是使用 UnmanagedMemoryStream
,使用内置的 .NET System.Runtime.Serialization
序列化您的数据(其中 XML 风格目前更流行,并且更容易从博客和其他来源复制)。
干杯
【讨论】:
以上是关于执行之间的常量数据的主要内容,如果未能解决你的问题,请参考以下文章