C# C:在注册表中存储.Net对象

C# C:在注册表中存储.Net对象,c#,registry,C#,Registry,是否可以在注册表中存储.Net对象 我想在注册表中存储一个通用列表,然后检索它并将其解析回该列表 这是可能的,还是需要手动序列化它,然后反序列化回来 [更新] 根据发布的答案,我将序列化对象并将其保存在当前用户的AppData文件夹中。您必须自己序列化它。请注意,您可以存储的数据量可能会受到限制,具体取决于Windows版本 您必须序列化它。注册表只存储基本值。您需要手动序列化它。为什么要使用注册表 存储此类序列化对象的适当位置通常位于用户的应用程序数据文件夹或文件夹中。当然,序列化的方法取决于

是否可以在注册表中存储.Net对象

我想在注册表中存储一个通用列表,然后检索它并将其解析回该列表

这是可能的,还是需要手动序列化它,然后反序列化回来

[更新]


根据发布的答案,我将序列化对象并将其保存在当前用户的AppData文件夹中。

您必须自己序列化它。请注意,您可以存储的数据量可能会受到限制,具体取决于Windows版本


您必须序列化它。注册表只存储基本值。

您需要手动序列化它。

为什么要使用注册表

存储此类序列化对象的适当位置通常位于用户的应用程序数据文件夹或文件夹中。当然,序列化的方法取决于您。XML、二进制等,本质上是磁盘上的文件

根据数据和并发需求,可以考虑本地数据库或SQLServer Express之类的东西。


有些应用程序确实会在注册表中存储最近使用的MRU列表,但这只是通过迭代给定键的所有值来实现的。我不推荐这种方法。

是的,我认为您必须自己对其进行序列化和反序列化。但您可以将其存储为二进制块或text/xml。注册表数据可能有大小限制


最大的问题是这是一件好事吗?

我首先要说的是:这听起来真是个坏主意

如果你坚持这样做,你必须先序列化它。注册表不支持插入.NET对象。

如果列表中包含的类型是可序列化的,则有可能。如果是这种情况,您可以将其序列化并将其存储在字符串值中


但这可能是一个非常糟糕的主意。注册表变得足够大了。相反,将此类内容放在文件系统的“所有用户”应用程序数据文件夹中。

不太清楚为什么要在注册表中存储.NET对象,因为BCL中已有允许您使用XML配置文件执行此操作的功能。。。但是,尽管如此,在注册表中存储.NET对象当然是可能的。您可能只想在对象的大小相对较小的情况下执行此操作,但无论如何,这不应该是一个问题。我想最明显的方法是不使用格式/空格,将对象存储为序列化字符串值。

赞成添加为什么建议的方法是个坏主意。显然,在写评论时,我们不允许再使用表达式加1到0的幂。这个地方变得太偏僻了。我想知道是否允许我包含这些内容?