У меня есть десяток сервисных классов, которые были построены для WCF, например:методы добавления к существующему классу - наследование/инъекции
public class BookingService : IBookingService
{
public void BookTheThing(int ThingID) { .. }
}
Мы стремимся повторно использовать эти классы как прямые библиотеки (не WCF) и создать которая позволит нам сохранить и разоблачить те существующие методы и добавить новые. Вот 2 варианта я придумываю на основе моего ограниченного опыта:
* Вариант № 1 - Вводите оригинальный класс и создать идентичные методы разоблачить его функциональность:
public class BookingServiceNew : IBookingServiceNew
{
public BookingServiceNew(IBookingService service) { _baseService = service; }
public void BookTheThing(int ThingId) { _baseService.BookTheThing(ThingId); }
public bool OurNewMethod1(int ThingId) { return true; }
public int OurNewMethod2(int ThingId) { return 1; }
}
* Вариант № 2 - Наследовать оригинальный класс обслуживания, который будет автоматически выставлять свои методы в рамках класса, а затем добавить наш собственный материал
public class BookingServiceNew : BookingService, IBookingServiceNew
{
public bool OurNewMethod1(int ThingId) { return true; }
public int OurNewMethod2(int ThingId) { return 1; }
}
Вариант # 1 кажется, что это будет иметь некоторый код и дублирование, чтобы создавать заглушки для каждого метода в имплантации и интерфейсе. Вариант № 2 кажется, что у него могут быть некоторые проблемы с инъекцией зависимостей на клиенте, где работа с IBookingServiceNew обеспечит доступ только к OurNewMethod1 & OurNewMethod2. Опять же, эти варианты, с которыми я пришел, основаны на моем очень ограниченном опыте, и я буду благодарен вашим мыслям и предложениям за лучший подход/практику/образец.
Благодаря
Не могли бы вы прокомментировать, почему «работа с« IBookingServiceNew »обеспечивала бы доступ только к' OurNewMethod1' ... »? (предполагая 'интерфейс IBookingServiceNew: IBookingService')? –