Связывание модели веб -API и полиморфное наследованиеC#

Место общения программистов C#
Ответить
Anonymous
 Связывание модели веб -API и полиморфное наследование

Сообщение Anonymous »

Я спрашиваю, знает ли кто -нибудь, можно ли передать в веб -API конкретный класс, который наследует от абстрактного класса. < /p>
Например: < /p>

Код: Выделить всё

public abstract class A
{
A();
}

public class B : A
{
}

[POST("api/Request/{a}")]
public class Request(A a)
{
}
< /code>
В настоящее время я оглядывался вокруг, и большинство решений говорят, что использование типенамелянга будет работать. < /p>
JsonMediaTypeFormatter jsonFormatter = new JsonMediaTypeFormatter();
jsonFormatter.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto;
< /code>
Однако это не этот случай. Также моя модель передается из приложения консоли в WebAPI. Я прочитал, что я смогу десериализировать объект JSON, и после попытки этого несколько раз я решил, что это не сработает. В настоящее время я наследуюсь от абстрактного класса с 3 моделями, но в будущем может расширить это. Как вы можете отметить, что добавление пользовательских модельных связующих может потребовать нескольких связующих, если нет способа сделать одну связующую общую для всех типов абстрактного класса.item = B();

//serialize and post to web api
MediaTypeFormatter formatter;
JsonMediaTypeFormatter jsonFormatter = new JsonMediaTypeFormatter();
jsonFormatter.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto;
formatter = jsonFormatter;

_content = new ObjectContent(item, formatter);
var response = _client.PostAsync("api/Request", _content).Result;
Когда действие webapi называется объектом null

Подробнее здесь: https://stackoverflow.com/questions/172 ... nheritance
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»