Я создаю небольшое веб-приложение, используя ASP.Net Core 2.2
.
В настоящее время у меня один интерфейс:
public interface ILocation {
public int Type {get;}
}
Есть 2 класса, реализующих этот ILocation
интерфейс:
public class StreetLocation: ILocation {
public int Type {get;set;}
public string City {get;set;}
public string State {get;set;}
}
public class GeoCoordinateLocation: ILocation {
public int Type {get;set;}
public double Latitude{get;set;}
public double Longitude{get;set;}
}
У меня есть один класс StudentViewModel
, который предназначен для получения информации, отправляемой от клиента к серверу. Этот класс реализован следующим образом:
public class StudentViewModel {
public Guid Id {get;set;}
public string Name {get;set;}
public ILocation Address {get;set;}
}
Мой запрос от клиента будет выглядеть так:
{
"id": "0da28089-c0da-41a7-a47f-89b54d52822b",
"name": "Student 01",
"location": {
"type": 1,
...
}
}
Если тип местоположения равен 1, ILocation
будет десериализован как StreetLocation
и как GeoCoordinateLocation
, если тип местоположения равен 2.
Есть какие-нибудь решения по этому поводу, пожалуйста?
Может ли это быть сделано IModelBinder
в ядре asp.net?
Спасибо