2017-01-03 22 views
3

これはC#DLLにあり、呼び出された実行可能ファイルからデバッグする方法がわからないので、これをデバッグするのには苦労しています。このXMLSerializeはなぜ機能しませんか?

今、私は、このメソッドを呼び出す場合:

public void SavePublisherData(out Int64 iResult) 
{ 
    using (System.IO.StreamWriter file = 
       new System.IO.StreamWriter(_strPathXML, true)) 
    { 
     file.WriteLine("This is a test"); 
    } 

    iResult = MakeResult(true); 
} 

私は私のMFCアプリケーションからの作品であることを呼び出す場合

。私はファイルで終わる。しかし、もし私が本当に欲しいことをしたら、結果は得られません。私はこの 出版社クラスがあります。

using System.Xml.Serialization; 

namespace MSAToolsLibrary 
{ 
    class Publisher 
    { 
     public Publisher() 
     { 

     } 

     [XmlElement] 
     public string Name 
     { 
      get { return _Name; } 
      set { _Name = value; } 
     } 
     private string _Name; 

     [XmlElement] 
     public string Notes 
     { 
      get { return _Notes; } 
      set { _Notes = value; } 
     } 
     private string _Notes; 
    } 
} 

をそして私は親クラスがあります。

using System; 
using System.Collections.Generic; 
using System.Xml.Serialization; 


namespace MSAToolsLibrary 
{ 
    [XmlRoot(ElementName = "PublisherDatabase", Namespace = "http://www.publictalksoftware.co.uk/msa")] 
    class PublisherData 
    { 
     public PublisherData() 
     { 
      _Publishers = new List<Publisher>(); 
     } 

     [XmlArray] 
     public List<Publisher> Publishers 
     { 
      get { return _Publishers; } 
      set { _Publishers = value; } 
     } 
     private List<Publisher> _Publishers; 

     public void AddStudent(String strName, String strNotes) 
     { 
      Publisher _Publisher = new Publisher() 
      { 
       Name = strName, 
       Notes = strNotes 
      }; 
      _Publishers.Add(_Publisher); 
     } 
    } 
} 

DLLライブラリは次のように保存し実行します。

public void SavePublisherData(out Int64 iResult) 
{ 
    try 
    { 
     XmlSerializer x = new XmlSerializer(_PublisherData.GetType()); 
     using (StreamWriter writer = new StreamWriter("d:\\andrew-test-3.xml")) 
     { 
      x.Serialize(writer, _PublisherData); 
     } 
    } 
    catch 
    { 
     iResult = MakeResult(false); 
     return; 
    } 

    iResult = MakeResult(true); 
} 

リターン結果が真であります。例外は発生しません。しかし、私はファイルが作成されません。

私はPublishers配列に4つの項目を追加しましたので、単純なXMLファイルを作成することを期待しています。

私の間違いは何ですか?

答えて

3

XmlSerializerはパブリッククラスのみで動作し、PublisherData &パブリッシャークラスは内部クラスです。

+0

ビンゴ!ありがとう... :) –

関連する問題