Я хотел бы десериализовать объект в данный тип класса, в зависимости от того, был ли успешным ответ ajax.
Итак, я написал следующий метод:
public IAjaxResponse GetResponse<TOk, TFail>()
{
var responseJson = this.response as Dictionary<string, object>;
object obj = null;
if ((string)responseJson["status"] == "ok")
obj = JsonConvert.DeserializeObject<TOk>(responseJson);
else
obj = JsonConvert.DeserializeObject<TFail>(responseJson);
return (IAjaxResponse)obj;
}
Теперь использовать его довольно просто:
var response = GetResponse<ClassWhenOk, ClassWhenFail>();
if (response is ClassWhenFail responseFail) {
Error.Show(responseFail.message);
return;
}
[..]
Теперь моя проблема : иногда бывают общие ответы, которые всегда имеют статус «ОК», поэтому я не хочу использовать аргумент второго типа для состояния сбоя.
Поэтому я хотел бы использовать что-то подобное:
\/ notice one type argument
GetResponse<ClassWhenOk>();
Это недопустимо, поскольку использование этого универсального метода требует 2 аргументов типа.
Итак, вот мой вопрос :
Могу ли я как-нибудьпометить аргумент второго типа (TFail
) как «не требуется»?Или мне лучше пойти по другому пути?