我在.NET 4.0中有一个C#应用程序。我有一个名为OrderBlock的自定义对象。此自定义对象包含一些属性和一个包含另一个名为Order的自定义对象的列表。当应用程序运行时,它将OrderBlock对象保存到我的设置文件中。C#从设置文件中读取自定义类型
我可以在设置文件中看到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"); }
}
** * *编辑* ** * **
下面是我我的对象保存到设置文件 - 它确实工作。
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>
您能否显示保存OrderBlock的代码和设置文件的摘录,显示信息存储的实际xml? –
@KaiHartmann我已经添加了我的设置文件的实际xml。 – mHelpMe