0

XSD ファイルからオブジェクトとクラスを生成しています。ただし、XSD のターゲット名前空間ではなく、1 つの名前空間で作成されたクラス。スキーマをコンパイルするにはどうすればよいですか?クラスは名前空間の下に生成する必要がありますか?

これが私のコードの例です:

// generate an assembly representing the given schema:
var codeNamespace = new CodeNamespace(namespaceName);
var codeProvider = new CSharpCodeProvider();
var codeGenerationOptions = new CodeGeneratorOptions();
using (var writer = new StringWriter())
{
    codeProvider.GenerateCodeFromNamespace(codeNamespace, writer,
                                           codeGenerationOptions);
    code = writer.ToString();
}
4

1 に答える 1

0

コード例は、生成されたコードをnamespaceName変数で指定した名前空間に配置するという点で機能します。名前空間を XSD と一致させたい場合は、namespaceNameそれに応じて変数を設定できます。

たとえば、string namespaceName = "My.Namespace.One";コード例で定義すると、コードの結果の値は"namespace My.Namespace.One {\r\n\r\n}"期待どおりになります。

したがって、単に XSD から名前空間を読み取り、それをに割り当てる必要がありnamespaceName ますあなたの例では。

ただし、生成したコードを実際にコンパイルするには、名前空間が C# の制限に準拠している必要があります。のような名前空間http://schemas.microsoft.com/winfx/2006/xamlは、C# ではコンパイルされません。その名前空間(確かではありませんが) IL バイト コード レベルで有効である可能性がありますが、有効であるとしても、特に C# にとって苦痛になることを考えると、あなたが行っていることにそのような労力を費やす価値があるかどうかは本当に疑問に思います。生成されたアセンブリを使用します。

あなたの質問/例にはいくつかの詳細が欠けている可能性があり、これはあなたが探している情報ではないかもしれません。ただし、この回答はあなたが提供したものと一致していると思います。

于 2013-02-07T16:30:09.487 に答える