Я разработал несколько базовых веб-сервисов с использованием 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)» не может реализовать элемент интерфейса, поскольку он не является общедоступным.