Я создал клиент для доступа к моим службам WCF в одном проекте, и все классы, которые работают со службами, наследуют этот класс:
public abstract class ServiceClient<TServiceClient> : IDisposable where TServiceClient : ICommunicationObject
В этом классе я делаю такие вещи, как удаление, ведение журнала при вызове клиента и т. Д. Некоторые общие вещи, которые обычно делают все классы обслуживания.
Все работало нормально, пока я не получил задачу реализовать это на старой системе. Я попал в проблему, когда использовал этот проект (DLL) в другом проекте, который не может ссылаться на System.ServiceModel
(так как это старое программное обеспечение .NET 2.0, которое я до сих пор поддерживаю, и о его обновлении до 3.0 не может быть и речи). Здесь, если я опускаю where TServiceClient : ICommunicationObject
, тогда проект может быть собран, но ServiceClient
не может использовать, например, client.Close()
или client.State
Итак, мое единственное решение - удалить оператор where
и переписать классы обслуживания?