1

RssXmlHelper.csのRssToolkitから次のコードが与えられます。

    /// <summary>
    /// Returns XML of the Generic Type.
    /// </summary>
    /// <param name="rssDocument">The RSS document.</param>
    /// <typeparam name="T">RssDocumentBase</typeparam>
    /// <returns>string</returns>
    public static string ToRssXml<T>(T rssDocument) where T : RssDocumentBase
    {
        if (rssDocument == null)
        {
            throw new ArgumentNullException("rssDocument");
        }

        using (StringWriter output = new StringWriter(new StringBuilder(), CultureInfo.InvariantCulture))
        {
            XmlSerializer serializer = new XmlSerializer(typeof(T));
            serializer.Serialize(output, rssDocument);
            return output.ToString();
        }
    }

私のWCFサービスでserializer.Serialize()が呼び出されると、かなりの時間がかかります。

これは、プロジェクトから呼び出すWCFサービスにあります。私はそれに足を踏み入れます、そして確かに、それが問題点です。

次に、ソリューション内でプロジェクトを参照しますが、問題はありません。

これをWCFサービスで使用するときに、別の方法で実行する必要があることはありますか?

- アップデート -

さて、Windows7および.NETFramework4用のMicrosoftWindows SDKをインストールし、sgne.exe RssToolkit.dllを実行すると、次のエラーが発生します。

Error:  An attempt was made to load an assembly with in incorrect format [path to rsstoolkit.dll]
- Could not load file or assemply [path to rsstoolkit.dll] or one of its dependencies.  This assembly was build by a runtime newer than the currently loaded runtime and cannot be loaded.

RssToolkitプロジェクトのターゲットフレームワークは4.0に設定されており、Windows SDK for .Net 4と一致しています。これは正しくありませんか?

4

1 に答える 1

3

sgen.exeWindows SDKに付属のXMLシリアライザージェネレーターツールを使用して、シリアル化アセンブリを生成できます。大規模なクラスで使用することで、大幅な改善が見られました。

基本的に、ドメイン内にあるすべてのオブジェクトをシリアル化および逆シリアル化する方法を知っているコードを生成します。DLLを生成したら、それをアセンブリ参照としてプロジェクトに含め、現在使用しているのではなく、DLL内のクラスを使用XmlSerializerできます。

于 2011-12-07T01:01:22.407 に答える