我在.Net 4.0中有一个C#应用程序。我有一个名为OrderBlock的自定义对象。此自定义对象包含一些属性和一个包含另一个名为Order的自定义对象的列表。当应用程序运行时,它会将OrderBlock对象保存到我的设置文件中。
我可以在设置文件中看到OrderBlock正确保存了属性&订单清单。我遇到的问题是下次我去运行应用程序并尝试读取OrderBlock对象是行不通的。它只返回null。
_orderBlockEntity = Properties.Settings.Default.MyOrderBlock;
其他设置我可以通过使用类似于上面一行的一行来读取。但是,OrderBlock对象是我在设置文件中使用的唯一自定义类型。
OrderBlock& Order对象包含具有XmlElement属性的属性,这些属性将属性重命名为另一个名称,这适用于发送xml消息时 - 不知道这是否是一个问题?
[XmlElement("tF_Transactions")]
public List<Order> Orders
{
get { return _orders; }
set { _orders = value; OnPropertyChanged("Orders"); }
}
** * * 编辑 * ** < EM> * **
下面是我将对象保存到设置文件的位置 - 这确实有效。
Properties.Settings.Default.MyOrderBlock = _orderBlock;
Properties.Settings.Default.Save();
Designer中的代码如下所示。
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public global::FC.OMS.TF.Entities.OrderBlock MyOrderBlock {
get {
return ((global::FC.OMS.TF.Entities.OrderBlock)(this["MyOrderBlock"]));
}
set {
this["MyOrderBlock"] = value;
}
}
下面是我的设置文件的snipet - 其余的只是更多的订单。下面显示的其他设置工作正常,重新启动我的应用程序后,可以读取它们的值。以下所有设置的范围是用户。
<setting name="LastFileDateTime" serializeAs="String">
<value>11/22/2013 09:01:29</value>
</setting>
<setting name="MessageSent" serializeAs="String">
<value>True</value>
</setting>
<setting name="MessageRecieved" serializeAs="String">
<value>True</value>
</setting>
<setting name="MyOrderBlock" serializeAs="Xml">
<value>
<SystemSettings>
<sCode>Key</sCode>
<sValue>msawyer131122090129848</sValue>
</SystemSettings>
<tF_Transactions>
<iId>17</iId>
<sSecurityId>GB0.144</sSecurityId>
<sPortfolio>OEE285</sPortfolio>
<sBuySell>B</sBuySell>
<sBuyCurrency>GBP</sBuyCurrency>
<sCostCurrency>GBP</sCostCurrency>
<iTransactionType>0</iTransactionType>
<dfBuyAmount>32000</dfBuyAmount>
<dfCostAmount xsi:nil="true" />
<dtDealDate>2013-11-22T09:01:29.8406559Z</dtDealDate>
<dtStartDate xsi:nil="true" />
<dtEndDate xsi:nil="true" />
<sUser>msawyer</sUser>
<sReason>FICLIENT</sReason>
<iStatus>0</iStatus>
<sComments>Bulk upload by msawyer at 22/11/2013 09:01:29</sComments>
<bGenerateDescription>true</bGenerateDescription>
<sDealer>msawyer</sDealer>
</tF_Transactions>
<tF_Transactions>
<iId>16</iId>
<sSecurityId>GB1.232</sSecurityId>
<sPortfolio>OEE285</sPortfolio>
<sBuySell>B</sBuySell>
<sBuyCurrency>GBP</sBuyCurrency>
<sCostCurrency>GBP</sCostCurrency>
<iTransactionType>0</iTransactionType>
<dfBuyAmount>30000</dfBuyAmount>
<dfCostAmount xsi:nil="true" />
<dtDealDate>2013-11-22T09:01:29.8396794Z</dtDealDate>
<dtStartDate xsi:nil="true" />
<dtEndDate xsi:nil="true" />
<sUser>msawyer</sUser>
<sReason>FICLIENT</sReason>
<iStatus>0</iStatus>
<sComments>Bulk upload by msawyer at 22/11/2013 09:01:29</sComments>
<bGenerateDescription>true</bGenerateDescription>
<sDealer>msawyer</sDealer>
</tF_Transactions>
答案 0 :(得分:0)
当我们更改用户范围设置时,新值将在应用程序会话期间保持不变。您可以在设置值后调用Settings.Save方法,在应用程序会话之间保留对用户设置的更改。