я сделал клиент для доступа к моему WCF услуг в одном проекте, и все классы, которые работают с сервисами наследуемых от этого класса:Проблема с проектом .NET 2.0, используя 3.0 DLL, которая реализует услуги 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
заявления, и переписать классы обслуживания?
Что вы подразумеваете под "(поскольку это старое программное обеспечение .NET 2.0, которое я до сих пор поддерживаю, и обновление его до 3.0 не может быть и речи)"? Возможно ли, что клиенты вашего приложения 2.0 не имеют установленной платформы .NET 3.0+? Или, вы не можете открыть проект 2.0 в VS и перекомпилировать, ориентируясь на .NET 3.0+? Это может не включать в себя какие-либо фактические изменения кода, чтобы привести ваше старое приложение с 2.0 до 3.0. – mbeckish
Ну, на сервере установлена новейшая инфраструктура, поэтому я могу импортировать свою DLL (которая предварительно скомпилирована - мне не разрешено добавлять проекты в решение). И, есть много людей, работающих над одним и тем же проектом (да, я имею в виду проект, а не решение!) И т. Д. Я просто не могу его обновить (насколько я этого хотел, зная, что эта проблема будет решена мгновенно) – avance70