CMS から出力される XML スキーマから .NET 型を生成するコードをいくつか書きました。これは順調に進んでおり、期待どおりの結果が得られています。
ここで、生成された型のデフォルト (パラメーターなし) コンストラクターをカスタマイズしたいと考えています。次のようなコードがあります。
CodeNamespace codeNamespace = new CodeNamespace("MyNamespace");
// import type mappings from schema
// export type mappings into codeNamespace
CodeTypeDeclaration codeType = codeNamespace.Types.First();
この時点で、正常に変更できcodeType
ます。属性、プロパティなどの追加/削除。
ただし、のMembers
プロパティを調べるとcodeType
、既定のコンストラクターがまだ定義されていないことがわかります。もちろん追加できます。CSharpCodeProvider.GenerateCodeFromNamespace
しかし、( を使用して)コード文字列を書き出すと、別の既定のコンストラクターが出力に追加されます (この場合、スキーマから派生したフィールドにいくつかの既定値を設定するため)。
私がやろうとしているのは、基本的に、デフォルトのコンストラクター内のメソッドへの呼び出しを挿入することです (codeType
上記のように正常に追加できるメソッド)。
(どのように) コード文字列を書き出すときに、既定のコンストラクター(Members
以前はコレクションに存在しなかった)が挿入されるという事実に対処できますか?