LinqToXSDを使用して、クライアントのXSDに基づいてドキュメントモデル(コード)を生成しています。これらのXSDは、ドキュメントモデルを生成するたびに共通の構造を共有するため、一部のオブジェクトが複製されます。コンパイルの問題を防ぐために、各ドキュメントモデルを独自の名前空間に配置しました。これはうまくいきました。
しかし、ここで、パブリック部分クラスであるこれらのオブジェクトを使用して、カスタム検証を実行したいと思います。そこでIValidate
、単一のValidate()
メソッドでインターフェースを定義しました。これで、複数のオブジェクトモデルで生成された低レベルのオブジェクトがありますが、それぞれが異なる名前空間にあります。
namespace1
{
public partial class foo : XTypedElement
{........}
}
namespace2
{
public partial class foo : XTypedElement
{........}
}
次に、すべてのfooクラスにIValidate
インターフェイスとメソッドを追加する単一の部分クラスファイルを作成します。Validate()
ただし、実際には異なるオブジェクトであるため、もちろんこれは機能しません。生成されたコードとコードの生成に使用されたXSDライブラリのために、これらがたくさんあります。
内部をシャドウすることができれば(上記の「......」を読んでください)、これは機能します。私は異なる名前空間に多くのfooを持っています(そして私はそれぞれ同じ問題を持つfoo1からfoo100を持っています)。私はコードを複製する必要があります、私はそれがノーノーであることを知っています、そして私はそれをする必要はありません。しかし、そうする場合、少なくとも同じコードのコピーをそれほど多く維持する必要はありません。
これはダイナミクスで実行できるとかなり確信していますが、そこに行く必要はありません。
誰かがこれらの検証メソッドを記述し、各namespace.classの部分クラスに手動でコピーする必要がない他の方法を提案できますか?