Дублирование кода в нескольких пространствах имен и частичных классах - PullRequest
0 голосов
/ 05 октября 2011

Я использую LinqToXSD для генерации моделей документов (кодов) на основе клиентских XSD. Поскольку эти XSD разделяют общую структуру каждый раз, когда я генерирую модель документа, некоторые объекты дублируются. Чтобы предотвратить проблемы компиляции, я поместил каждую модель документа в свое собственное пространство имен. Это отлично сработало.

Но теперь я хочу сделать некоторую пользовательскую проверку с этими объектами, которые являются публичными частичными классами. Итак, я определил интерфейс IValidate с помощью одного Validate() метода. Теперь у меня есть объект низкого уровня, сгенерированный в нескольких объектных моделях, но каждая в своем пространстве имен.

namespace1
{
    public partial class foo : XTypedElement
       {........}
}

namespace2
{
    public partial class foo : XTypedElement
       {........}
}

Теперь я хочу написать отдельный файл частичного класса для добавления интерфейса IValidate и метода Validate() для всех моих классов foo. Но, конечно, это не сработает, потому что они на самом деле разные объекты. У меня их много из-за сгенерированного кода и библиотеки XSD, используемой для генерации кода.

Если бы я мог просто затенить внутренние органы (прочитайте выше ......), это бы сработало. У меня много foo в разных пространствах имен (и у меня foo1 до foo100, каждый с одной и той же проблемой). Мне нужно дублировать код, я знаю, что нет-нет, и я не хочу этого делать. Но, если я это сделаю, я, по крайней мере, не хочу иметь столько копий одного и того же кода.

Я вполне уверен, что это можно сделать с помощью динамики, но я бы предпочел не идти туда.

Может кто-нибудь предложить какой-то другой способ написания этих методов проверки и не нужно вручную копировать в частичный класс каждого namespace.class?

...