Как преобразовать список интерфейсов в соответствующие им производные классы? C# - PullRequest
0 голосов
/ 12 апреля 2020

Я использую стороннюю библиотеку от компании, которая называется ой, скажем, Mobi. Они предлагают доменные объекты и клиента, который принимает доменные объекты THEIR, внутренне сериализует их и отправляет их в конечную точку отдыха.

Я хотел спроектировать свой код так, чтобы я не зависел от них полностью в случае, если я хочу поменять свою библиотеку на что-то специально построенное или другую стороннюю библиотеку. Таким образом, я создал классы с одинаковыми именами и унаследовал их от соответствующего стороннего класса.

например:

public class Patient : Mobi.Model.Patient, IResource
{

}

Я создал IResource, чтобы иметь фабричные методы, полиморфизм и весь этот джаз. Итак, вот моя проблема, я не могу использовать их клиент для публикации объектов МОЕГО домена. Мне нужно преобразовать мой доменный объект в их доменный объект, чтобы использовать их клиент.

Например:

var client = new Mobi.MobiClient();
IList<IResource> resources = new List<IResource>();
resources.Add(new Patient()) // my Patient class not theirs
resources.Add(new Doctor())  // my Doctor class not theirs

foreach(var resource in resources)
{
    var mobiResource = MethodToConvertIResourceToTheDerivedResourceAndMapItToTheirResource(resource)
    client.Post(mobiResource)
}

Итак, как мне реализовать метод для преобразования базового класса в производный класс? и затем сопоставить его с идентичным классом?

Я мог бы иметь несколько операторов "is", а затем использовать что-то вроде AutoMapper, но мне было интересно, было ли что-то более динамичное c или проще. Также хотел знать, если это плохой способ делать вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...