Сложность типов веб-сервисов - PullRequest
0 голосов
/ 25 октября 2010

Я разработал несколько базовых веб-сервисов с использованием WCF. До сих пор возвращаемые типы были довольно простыми. Вот операционные контракты, которые работают правильно:

[OperationContract]
string Vessel(int ID);

//lists all vessel
[OperationContract]
List<string> Vessels();

[OperationContract]
List<string> PortsLike(string LikeStr);

[OperationContract]
Port GetPort(string name);

Они работали прекрасно. Теперь я попытался немного раздвинуть конверт и попробовал следующее:

[OperationContract]
List<Pair> Vessels(List<string> fields, List<Criterion> criteria); 

Где Pair и Criterion - довольно простые классы, которые я определил.

к сожалению, эта последняя операция не компилируется. Это потому, что я достиг предела того, что может быть приспособлено веб-сервисами, или я делаю что-то явно неправильное?

Вот определения пары и критерия:

[DataContract]
public class Criterion
{
    [DataMember]
    public string Key { get; set; }
    [DataMember]
    public string Operator { get; set; }
    [DataMember]
    public string Value { get; set; }
}

[DataContract]
public class Pair
{
    [DataMember]
    public string Key { get; set; }

    [DataMember]
    public string Value { get; set; }

    public Pair(string key, string value)
    {
        this.Key = key;
        this.Value = Value;
    }
}

Вот ошибка, которую я получаю от компилятора:

Ошибка 1 «VOps.VOpsService» не реализует элемент интерфейса «VOps.IVOpsService.Vessels (System.Collections.Generic.List, System.Collections.Generic.List)». «VOps.VOpsService.Vessels (System.Collections.Generic.List, System.Collections.Generic.List)» не может реализовать элемент интерфейса, поскольку он не является общедоступным.

Ответы [ 2 ]

0 голосов
/ 27 октября 2010

Я не объявлял реализацию службы общедоступной.

0 голосов
/ 25 октября 2010

Вы не должны иметь [DataMember] в конструкторе Pair

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...