2011-04-13 46 views
0

我有一个C#应用程序使用我制作的DLL,并且我必须在DLL中存储3个变量,这些变量必须是常量,所以即使用户关闭程序后我也可以获取它们(我需要在我将数据写入DLL之后,让他们执行每次执行)。我想将它们存储在DLL内部,因为我不想使用注册表或使用任何外部文件,所以我正在考虑使用DLL中的Resource文件来读/写我的静态数据。执行之间的常量数据

任何人都可以给我一个如何使用像这样的资源数据的例子,或者建议另一种方法来做到这一点,而不用声明硬编码变量(我不能这么做),或者使用注册表/外部数据文件来存储信息。

回答

0

使用常规内存映射文件。写入二进制可执行文件是不好的做法,很多(如果不是全部的话)操作系统将会禁止在最混杂的安全策略设置中的所有操作。

PS。这种存储的流行术语是'数据库'(或程序数据库)。这应该有助于您获得一些Google点击。另外,根据您的首选实现方法,您可以使用内存映射来覆盖您的数据段(这样您就可以拥有您的蛋糕并将其吃掉):让您的全局静态数据在之间轻松提交到磁盘)。但是,这更多的是C/C++精神。

在.NET中你必须使用一个巨大的自定义布局结构(意思是,所有引用类型都出了问题 - 这是在C#中更不自然比在,比方说,C++)

所以你最好的选择是使用一个UnmanagedMemoryStream,使用内置的.NET System.Runtime.Serialization(其中的XML风格是更受欢迎并且容易从博客和其他来源复制的)来序列化你的数据。

干杯

2

我会建议使用Isolated storage写您的数据。您可以快速启动here

+0

Woah - 很好找!爱这种指针。 (_我有一种坦率地说远离这种感觉的感觉,但是这是我写便携式代码,我想 - ) – sehe 2011-04-13 18:28:37