// Without Initializer List
class MyClass {
Type variable;
public:
MyClass(Type a) { // Assume that Type is an already
// declared class and it has appropriate
// constructors and operators
variable = a;
}
};
Здесь компилятор выполнил следующие шаги для создания объекта типа MyClass 1. Конструктор типа сначала называется «a». 2. Оператор присваивания «Тип» вызывается внутри тела конструктора MyClass () для назначения
variable = a;
// With Initializer List
class MyClass {
Type variable;
public:
MyClass(Type a):variable(a) { // Assume that Type is an already
// declared class and it has appropriate
// constructors and operators
}
};
. С помощью списка инициализаторов следуют шаги, за которыми следует компилятор: Копировать конструктор класса «Тип» вызывается для инициализации: variable (a). Аргументы в списке инициализаторов используются для непосредственного копирования «переменной». Деструктор «Тип» вызывается для «а», поскольку он выходит за рамки. Есть 2 возможных BodyStyle
для запроса и ответа, завернутый или голый . Когда вы указываете упакованный стиль тела , служба WCF
ожидает, что будет передан действительный json, который в вашем случае будет
//note that property name is case sensitive and must match service parameter name
{
"jsonString": "some value"
}
И когда вы укажете bare отформатировать, что служба ожидает только обычное строковое значение (в случае типа примитива, как ваш) в качестве запроса, подобного этому
"some value"
Когда вы сериализуете свой объект следующим образом
dynamic foo = new ExpandoObject();
foo.position = 1;
string result = JsonConvert.SerializeObject(foo);
the [118 ] содержит следующий json
{
"position":1
}
, который соответствует формату в оболочке , и служба возвращает 400: Bad Request
. Все, что вам нужно сделать, это превратить этот json в действительное значение json string
, например,
"{\"position\":1}"
. Это можно сделать повторным вызовом JsonConvert.SerializeObject
dynamic foo = new ExpandoObject();
foo.position = 1;
string wrapped = JsonConvert.SerializeObject(foo);
string bare = JsonConvert.SerializeObject(wrapped);
var content = new StringContent(bare, System.Text.Encoding.UTF8, "application/json");
.