当前位置: 首页 > 编程语言 > C#

如何将自定义类保存-序列化到设置文件?Share

时间:2023-04-10 22:00:41 C#

如何将自定义类保存/序列化到设置文件?我有一个包含两个字符串的小类:publicclassReportType{privatestringdisplayName;publicstringDisplayName{get{returndisplayName;}}私有字符串报告名称;公共字符串ReportName{get{returnreportName;}}publicReportType(stringdisplayName,stringreportName){this.displayName=displayName;this.reportName=reportName;我想将此类的一个实例保存到我的设置文件中,这样我就可以这样做:ReportTypereportType=Settings.Default.SelectedReportType;谷歌搜索似乎表明这是可能的,但似乎没有任何明确的指导方针可供我遵循。我知道需要进行一些序列化,但不知道从哪里开始。此外,当我转到VisualStudio设置屏幕并单击类型列下的浏览时,没有选项可以选择包含ReportType类的当前命名空间。好吧,我想我终于解决了这个问题。首先要做的是为需要序列化的ReportType类的每个属性添加以下属性,并从ApplicationSettingsBase继承该类:publicclassReportType:ApplicationSettingsBase{privatestringdisplayName;[UserScopedSetting()][SettingsSerializeAs(System.Configuration.SettingsSerializeAs.Xml)]publicstringDisplayName{get{returndisplayName;}}…………..然后,一旦程序集被重建(重要!),您可以转到设置屏幕并单击浏览,然后在底部将您的命名空间和类名(例如Label_Creator.ReportType)键入文本框。命名空间和类名没有出现在树中,所以这部分不是很明显你需要做什么,这就是为什么它有点混乱....@Calanus解决方案对我不起作用(在VisualStudio上2015)。缺少的步骤实际上是设置或从实际设置中获取。至于原来的问题,实现了一个简单的POCO可以这样实现:[Serializable]publicclassReportType{publicstringDisplayName{get;放;}publicstringReportName{get;放;}publicReportType(){}publicReportType(stringdisplayName,stringreportName){DisplayName=displayName;报告名称=报告名称;}}//负责读写设置的类名称(报告类型)];}set{this[nameof(ReportType)]=value;}}}我使用了实际顺序列表:[Serializable]publicclassSchedule{publicSc??hedule():this(string.Empty,DateTime.MaxValue){}publicSc??hedule(stringpath,DateTimeterminationTime){path=driverPath;终止时间=终止时间;}publicDateTimeTerminationTime{get;放;}公共字符串路径{得到;放;}}公章edclassSchedules:ApplicationSettingsBase{[UserScopedSetting][SettingsSerializeAs(SettingsSerializeAs.Xml)][DefaultSettingValue("")]publicListEntries{get{return(List)this[nameof(Entries)];}}set{this[nameof(Entries)]=value;}}}实例化一个Schedules(ReportTypeSettings)对象,它将自动读取设置。可以使用reload方法刷新。例如:ReportTypeSettingsrts=newReportTypeSettings();rts.Reload();rts.ReportType=newReportType("report!","report1");rts.保存();重要说明:请注意,UserScoped是有意使用的。ApplicationScoped的行为不同,因此请确保您知道自己在做什么。成员是公共的(包括setter)并且即使代码需要它也有一个默认的c'tor。但是,使用XML的序列化不能正常工作。由于时间关系,我没有深入研究。您还可以将序列化更改为二进制格式。它将使用BASE64来存储数据。所有设置都存储在LOCALAPPDATA文件夹中的文本文件中。我如何创建一个静态方法来返回一个ReportType实例,该实例包含配置文件中的数据。它更简单,我认为不需要序列化。公共类ReportType{publicstaticReportTypeGetDefaultSelectedReportType(){stringdisplayName=ConfigurationManager.AppSettings["DefaultDisplayName"];stringreportName=ConfigurationManager.AppSettings["DefaultReportName"];返回新的报告类型(显示名称,报告名称);}。..}那么查理的代码就更清晰了以上是C#学习教程:如何将自定义类保存/序列化到设置文件?如果分享的内容对你有用,需要了解更多C#学习教程,希望你多多关注——["DefaultDisplayName"],ReportName=ConfigurationManager.AppSettings["DefaultReportName"]};}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: