.net 在应用程序设置、数字/字符串表示或对象中存储什么?

.net 在应用程序设置、数字/字符串表示或对象中存储什么?,.net,configuration,settings,application-settings,.net,Configuration,Settings,Application Settings,我一直在考虑在项目设置、对象或这些对象的数字/字符串表示中存储什么,以设置规则,并避免在将来考虑这个问题,因此我希望采取最佳方法 一方面,存储对象表示可以使您知道所存储的内容是有效的,并避免您每次访问对象表示时进行转换。您只需要具有该属性的对象 另一方面,存储对象的数字/字符串表示可以简化设置的编辑,因为最终用户将输入数字或字符串信息 你对这个问题怎么办?有趣的问题。就我个人而言,我尽量不在设置中存储复杂的对象,因为(在我看来,这是主观的)它使维护程序员更难理解代码。我倾向于在设置中使用简单类型

我一直在考虑在项目设置、对象或这些对象的数字/字符串表示中存储什么,以设置规则,并避免在将来考虑这个问题,因此我希望采取最佳方法

一方面,存储对象表示可以使您知道所存储的内容是有效的,并避免您每次访问对象表示时进行转换。您只需要具有该属性的对象

另一方面,存储对象的数字/字符串表示可以简化设置的编辑,因为最终用户将输入数字或字符串信息


你对这个问题怎么办?

有趣的问题。就我个人而言,我尽量不在设置中存储复杂的对象,因为(在我看来,这是主观的)它使维护程序员更难理解代码。我倾向于在设置中使用简单类型(sting、int等)

如果我有一个具有许多属性的复杂对象,那么我可以将属性值存储在设置文件中

例如,假设您有一个自定义ErrorLoggingModule,该模块具有“DatabaseConnectionString”、“ApplicationID”等属性。(我们使用类似的方法,编写的每个应用程序都有一个唯一的应用程序ID。这为我们所有的应用程序提供了一个中央错误日志数据库。)


我会将这些值存储在设置文件中,并有一个用于记录错误的例程。此例程将创建一个新的ErrorLoggingModule对象,从文件中读取适当的设置,并将设置文件中的值应用于适当的属性,然后做我需要做的任何事情。

让ErrorLoggingModule可序列化并直接在设置中写入如何?对我来说,这对我之后的维护开发人员来说似乎更难。我可以这样做,但当有两种选择时,我90%的时间倾向于走更简单的路线。(除非更简单的路由会损害安全性、用户体验或代码清晰度。)在这种情况下,使用设置设计器和使用标准数据类型更简单。是的,但是您需要验证存储在其中的所有值,以防有人直接编辑配置文件,例如,这会增加复杂性。。。也许你是对的。。。