0

XmlSchemaSetProvider からの XML スキーマがあり、正しい順序で指定された型にある可能性のあるすべての XML 要素 (名前) のリストが必要です。

スキーマは、XML スキーマ拡張、複合型、シーケンスを使用します...

これを達成するための良い方法はありますか?

原因: .NET 型を反映するときに返されるプロパティの順序に依存するカスタム XML シリアライザーがありますが、その (未定義として文書化されている) 順序の動作は MSBuild 14 で変更されました。クラス プロパティ。したがって、XSD情報から順序を検出/修正し、それを使用してXMLを修正するという考えです。

4

2 に答える 2

0

最終的に、XML スキーマではなく、クラス レイアウトに基づく別のアプローチを選択しました。すべてのプロパティに "[PropertyLineNumber]" を 1 回の検索と置換で追加し、リフレクションを介して使用して信頼できる順序を取得しました。順序は「継承チェーン、次に行番号」です。ここでは、属性 (C# 6 を使用) を使用して、シリアライザーのリフレクションを介して行番号情報を利用できるようにしました。

[AttributeUsage(AttributeTargets.Property)]
public sealed class PropertyLineNumberAttribute : Attribute
{
    public int LineNumber { get; }

    public PropertyLineNumberAttribute([CallerLineNumber] int lineNumber = 0)
    {
        LineNumber = lineNumber;
    }
}
于 2015-12-17T17:34:28.447 に答える