Код: Выделить всё
[OperationContract(Name="FooBar")]
[WebInvoke(Method = "POST", UriTemplate = "FooBar")]
Task FooBar(
string scenario,
string version,
List filters);
Код: Выделить всё
[DataContract]
[KnownType(typeof(List))]
[KnownType(typeof(List))]
public class SomeObjectClass
{
///
/// Gets or sets the property name
///
[DataMember(IsRequired = true)]
public string Name { get; set; }
///
/// Gets or sets the property value
///
[DataMember(IsRequired = true)]
public List Values { get; set; }
}
Код: Выделить всё
[DataContract]
public class FilterClass
{
private string sourceString;
[DataMember(Name = "Source", IsRequired = true)]
public string SourceString
{
get
{
if (string.IsNullOrWhiteSpace(sourceString))
{
sourceString = Enum.GetName(typeof(Source), this.HealthSource);
}
return healthSignalSourceString;
}
private set { }
}
[IgnoreDataMember]
public Source SourceEnum;
[DataMember(Name = "Names", IsRequired = false)]
public List Names;
[DataMember(Name = "SomeBool", IsRequired = true)]
[JsonPropertyName("SomeBool")]
public bool SomeBool;
Код: Выделить всё
https://{endpoint}/FooBar
{
"scenario": "SomeScenario",
"version": "1",
"filters": [
{
"Name": "Prop1",
"Values": [
"Guid"
]
},
{
"Name": "Prop2",
"Values": [
{
"Source ": "ABC",
"SomeBool": true
}
]
}
]
}
Я могу без проблем преобразовать объект в список строк версии 0, и эта версия API работает.
Однако для FilterClass Я не могу преобразовать объект в FilterClass ни при каких обстоятельствах. Объект не распознается как тип класса фильтра. Был бы очень признателен за помощь в этом! Я попробовал несколько разных вещей, таких как:
- попытка преобразовать объект в строку, а затем десериализовать как тип FilterClass (невозможно десериализовать строку в том виде, в котором она есть) просто System.Object)
- (выбросить null)
Код: Выделить всё
var hssf = value as FilterClass;
- Различные украшения [DataMember]
Подробнее здесь: https://stackoverflow.com/questions/793 ... hat-object