Вы можете создать модель и использовать Mapper (например, AutoMapper или EmitMapper или ValueInjecter ) для сопоставления между вашими объектами и проверки по сопоставленной модели.
Когда вам нужно перенести объект обратно, вы можете сопоставить модель с полученной моделью.
Это очень похоже на подход ViewModel в ASP.NET MVC.
Так что-то вроде этого:
Класс A (класс из DLL)
Класс B (ваша модель)
Вы устанавливаете все свои аннотации на B и создаете любые нужные вам свойства.
То, что вы используете, это B. Когда вы получаете что-то из репозитория / источника, вы отображаете (копируете все соответствующие значения) A => B и отправляете это (скажем, как модель в View).
Когда вы получаете B обратно, вы проверяете его, а затем сопоставляете его другим способом B => A и отправляете его в хранилище / службу.
Кстати: я бы рекомендовал использовать этот подход, даже если модель А была ВАШИМ классом.
Зачем использовать ViewModels вместо доменных моделей в представлениях.