Утилиты WCF выставляют свойства?

В интерфейсе, требуемом для реализации службы WCF, я объявляю основной класс с атрибутом [ServiceContract()] и любым открытым методом с [OperationContract()].

Как я могу публиковать публичные свойства? Благодаря

Ответ 1

Вы не можете. Это не так, как это работает. Только методы.

Ответ 2

Поскольку часть получения свойства является методом, это будет технически работать, но, как упоминалось в предыдущих ответах/комментариях, это может быть нежелательно; просто разместив его здесь для общих знаний.

Сервисный контракт:

[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();

Ответ 3

Свойства - это объектно-ориентированный аспект интерфейсов компонентов. WCF - это услуги, где вам нужно подумать и разработать последовательность взаимодействий между вашими компонентами.

Ориентация объектов не очень хорошо масштабируется для распределенных сценариев (где ваш код выполняется на нескольких серверах или даже в нескольких процессах) из-за стоимости roundtrips, потенциально дорогостоящего управления состоянием и проблем с версией. Однако ОО по-прежнему является хорошим способом проектирования внутренних служб, особенно если они сложны.

Ответ 4

Вы можете открыть свойства, но вам придется использовать атрибут [DataContract] и может объявлять свойство как атрибут [DataMember] для свойств.

Ответ 5

ПОЖАЛУЙСТА, ПОЖАЛУЙСТА, не открывайте свойства как веб-метод. Это не будет работать в HTTPS. У меня было БОЛЬШОЕ время, идентифицирующее и исправляющее эту проблему. Лучший способ - написать конкретный метод для возврата в WCF.