我在.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