В интерфейсе, требуемом для реализации службы WCF, я объявляю основной класс с атрибутом [ServiceContract()]
и любым открытым методом с [OperationContract()]
.
Как я могу публиковать публичные свойства? Благодаря
В интерфейсе, требуемом для реализации службы WCF, я объявляю основной класс с атрибутом [ServiceContract()]
и любым открытым методом с [OperationContract()]
.
Как я могу публиковать публичные свойства? Благодаря
Вы не можете. Это не так, как это работает. Только методы.
Поскольку часть получения свойства является методом, это будет технически работать, но, как упоминалось в предыдущих ответах/комментариях, это может быть нежелательно; просто разместив его здесь для общих знаний.
Сервисный контракт:
[ServiceContract]
public interface IService1
{
string Name
{
[OperationContract]
get;
}
}
Услуги:
public class Service1 : IService1
{
public string Name
{
get { return "Steve"; }
}
}
Чтобы получить доступ к вашему клиентскому коду:
var client = new Service1Client();
var name = client.get_Name();
Свойства - это объектно-ориентированный аспект интерфейсов компонентов. WCF - это услуги, где вам нужно подумать и разработать последовательность взаимодействий между вашими компонентами.
Ориентация объектов не очень хорошо масштабируется для распределенных сценариев (где ваш код выполняется на нескольких серверах или даже в нескольких процессах) из-за стоимости roundtrips, потенциально дорогостоящего управления состоянием и проблем с версией. Однако ОО по-прежнему является хорошим способом проектирования внутренних служб, особенно если они сложны.
Вы можете открыть свойства, но вам придется использовать атрибут [DataContract]
и может объявлять свойство как атрибут [DataMember]
для свойств.
ПОЖАЛУЙСТА, ПОЖАЛУЙСТА, не открывайте свойства как веб-метод. Это не будет работать в HTTPS. У меня было БОЛЬШОЕ время, идентифицирующее и исправляющее эту проблему. Лучший способ - написать конкретный метод для возврата в WCF.