поэтому .Net 4 добавил именованные и необязательные параметры, которые довольно приятны. Мне не нужно делать столько методов перегрузки 1 строки.
Будет ли это работать через WCF?
поэтому .Net 4 добавил именованные и необязательные параметры, которые довольно приятны. Мне не нужно делать столько методов перегрузки 1 строки.
Будет ли это работать через WCF?
Поскольку это семантика компилятора, я бы сказал нет. Однако вы ожидаете, что они будут работать только следующим образом.
На стороне сервисного кода весь код будет принимать параметры по умолчанию.
На стороне клиента я отмечаю, что инструмент «Добавить ссылку на службу» в VS2010 не берет значения по умолчанию и не добавляет их к сгенерированному прокси. Так что вам придется создать свой собственный прокси.
Таким образом, клиентский код может использовать значения по умолчанию, если значение по умолчанию указано в реализации контракта на стороне клиента.
Я бы сказал, что то же самое верно и для именованных параметров.
В целом да, но этот материал не переносится через WCF. Все, что произойдет, это то, что прокси-сервер клиента должен будет отправить в фабрику каналов в качестве правильного параметра.
WSDL не может описывать необязательные параметры, поэтому ответ «нет».
async
.
- person John Saunders; 05.12.2011
Я работаю с VS 2017, .Net 4 и проектом WcfService. У меня есть такая служба:
Интерфейс:
namespace MyServiceNamespace
{
[ServiceContract]
public interface IMyService
{
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json)]
String GetSomething(int Produkt, DateTime MyDate, char SomeFlag);
}
public class myService : IMyService
{
public String GetSomething(int Produkt, DateTime MyDate, char SomeFlag)
{
if(Produkt==0){Produkt=12345;}
if(MyDate==DateTime.MinValue){MyDate=DateTime.Today;}
if(SomeFlag=='\0'){SomeFlag='F';}
return dosomething();
}
}
}
я могу вызвать это с помощью http://myserver/myservice.svc/GetSomething?Produkt=1&MyDate=2018-01-01&SomeFlag=A
но также http://myserver/myService.svc/GetSomething?Produkt=1&MyDate=2018-01-01
или даже http://myserver/myservice.svc/GetSomething
отсутствующие параметры заполняются «пустым» или значением по умолчанию типа. Я не знаю, есть ли лучший способ установить собственное значение по умолчанию, потому что
public String GetSomething(int Produkt, DateTime MyDate, char SomeFlag='F')
не сработало, все равно SomeFlag =='\0'
Чего я не узнал, так это того, как я могу определить, есть ли значение, потому что параметр отсутствовал или был вызван, например, 1.1.0001.
Обновление: разметка MyService.svc:
<%@ ServiceHost Language="C#" Debug="true" Service="MyServiceNameSpace.MyService" CodeBehind="MyService.svc.cs" Factory=System.ServiceModel.Activation.WebScriptServiceHostFactory %>