XMLSerializationを使用して、クライアントベースのWin7アプリケーションからサーバー(Server 2008 R2)にパイプ通信プロセスを介してデータを渡します。私はそれを放棄した前の開発者の努力を終えるためにこのプロジェクトに連れてこられました...したがって、私は現在、動作しないVS2010のC#コードを修正しようとしています。
問題は、「パブリック部分クラステスト」にある次のメソッドから結果の出力の完全なシリアル化を取得できないことです。以下の各項目に一致するMSCompactServerデータベース(「Test」という名前)にテーブルが定義されており、両方のテーブルの一致するTestIDに基づいて、「Channel」テーブルへのFKがあります。EntityCollectionは、「チャネル」テーブルとの関係に基づいています。
public Test(Guid TestID, String TestName, String TestRemarks, String ScriptPath,
EntityCollection<Channel> TChannels)
{
ID = TestID;
Name = TestName;
Remarks = TestRemarks;
Path = ScriptPath;
Channels = TChannels;
}
これは、メソッドの実行でどのように使用されるかのサンプルです。
Test T = new Test(NewID, "Test1", "Test_120912-1729",
"C:\\Temp\\TestScript_16.txt", TChannels);
シリアル化プロセスの結果は次のとおりです。
<DataCore xsi:type="Test">
<ID>bc6a8ef7-c31f-404d-8108-86219d45be63</ID>
<Name>Test1</Name>
<Remarks>Test_120912-1729</Remarks>
<Path>C:\Temp\TestScript_16.txt</Path>
</DataCore>
最初の4つのパラメーターは正常にシリアル化されますが、最後のパラメーター(EntityCollection)はシリアル化に失敗します。ただし、「TChannels」を単独で(「Test」機能の外で)シリアル化しようとすると、各テストチャネルのシリアル化は完全に機能します。この問題を解決するためにXMLシリアル化を利用するための制限/要件を完全には理解していません。関数内からEntityCollection<>をシリアル化できないのはなぜですか?
ご協力ありがとうございます!