Код: Выделить всё
[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). )
- var hssf = значение как FilterClass; (выбросить null)
- Различные оформления [DataMember]
Подробнее здесь: https://stackoverflow.com/questions/793 ... hat-object