2013-11-22 6 views
0

У меня есть приложение C# в .Net 4.0. У меня есть пользовательский объект, который называется OrderBlock. Этот пользовательский объект содержит несколько свойств и список, содержащий другой настраиваемый объект под названием «Заказ». Когда приложение запускается, он сохраняет объект OrderBlock в свой файл настроек.C# Чтение настраиваемого типа из файла настроек

Я могу видеть в файле настроек OrderBlock правильно сохранил список свойств &. Проблема, которая у меня есть, в следующий раз, когда я иду запускать приложение и пытаюсь прочитать объект OrderBlock, не работает. Он просто возвращает null.

_orderBlockEntity = Properties.Settings.Default.MyOrderBlock; 

Другие настройки. Я могу нормально читать, используя линию, похожую на строку выше. Однако объект OrderBlock является единственным настраиваемым типом, который я использую в файле настроек.

OrderBlock & Объекты-заказ содержат свойства с атрибутами XmlElement, которые переименовывают свойство в другое имя, это для отправки XML-сообщения - понятия не имеете, если это проблема?

[XmlElement("tF_Transactions")] 
    public List<Order> Orders 
    { 
     get { return _orders; } 
     set { _orders = value; OnPropertyChanged("Orders"); } 
    } 

** * * EDIT * ** * **

Ниже, где я сохранить объект в файле настроек - который делает работу.

Properties.Settings.Default.MyOrderBlock = _orderBlock; 
Properties.Settings.Default.Save(); 

Код в Конструкторе представлен ниже.

[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; 
     } 
    } 

Ниже приведена справка моего файла настроек - остальное - это просто больше заказов. Другие настройки, показанные ниже, отлично работают, поскольку после перезапуска моего приложения их значения можно прочитать. Область для всех параметров ниже - Пользователь.

 <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

Не могли бы вы показать код, сохраняющий OrderBlock, и выдержку из файла настроек, отображающую фактический xml, в котором хранится информация? –

+0

@KaiHartmann Я добавил фактический xml моего файла настроек. – mHelpMe

ответ

0

Когда мы меняем настройку области пользователя, новое значение сохраняется в течение всего сеанса приложения. Вы можете сохранить изменения пользовательских настроек между сеансами приложений, вызвав метод Settings.Save после установки значения.

+0

Значение сохраняется, я вижу их правильно. Его просто при открытии моего приложения в следующий раз, когда он не будет считывать значение из файла настроек для моего настраиваемого типа, он будет использоваться для других типов, таких как datetime, bool и т. Д. – mHelpMe

+0

Пожалуйста, проверьте эту ссылку http://stackoverflow.com/ questions/7681957/trouble-saving-a-collection-of-objects-in-application-settings У него есть та же проблема, что и у вас. –

+0

Но я не вижу никакой разницы с предоставленным решением и тем, что у меня есть. Я редактировал свой вопрос, чтобы показать код в своем классе дизайнера. – mHelpMe

Смежные вопросы