Я пытаюсь использовать autorest для создания моего клиента web api, но возвращаемые типы datacontract всегда генерируются как объект
Я пытаюсь вызвать свой собственный вызов Web API, чтобы получить объект, который я определяю как контракт данных. Я использую Swagger для украшения вызова, а в клиенте я генерирую клиент с помощью AutoREST. Однако, хотя мои вызовы, которые проходят в объекте [DataContract], работают нормально, возвращаемые значения всегда задаются как объект в сгенерированном клиентском коде, а не соответствующий класс [DataContract], который я определил.
Я искал больше информации о Swagger/Swashbuckle и AutoREST и о том, что мне нужно сделать, но не очень много помощи. Это происходит с VS 2015 Pro с использованием .Net 4.5.2.
Когда я прослеживаю и смотрю на фактические данные HttpResponse, я получаю свой объект сериализованным как JSON. Однако сгенерированный клиент хочет только десериализоваться как объект, который, конечно же, возвращает null. Я мог бы взломать сгенерированный код, но мне придется делать это всякий раз, когда он будет регенерирован.
Я был бы признателен за любую информацию по этому поводу...
Что я уже пробовал:
Вот один из DataContracts:
[DataContract] public class Company { [DataMember(Name = "id")] public int Id { get; set; } [DataMember(Name = "companyName")] public string CompanyName { get; set; } [DataMember(Name = "website")] public string Website { get; set; } [DataMember(Name = "description")] public string CompanyDescription { get; set; } }
А вот звонок, чтобы получить экземпляр:
[SwaggerOperation("GetCompanyById")] [SwaggerResponse(HttpStatusCode.OK)] [SwaggerResponse(HttpStatusCode.NotFound)] public DataContract.Company Get(int id) { //*** work to retrieve the data, validate etc. *** DataContract.Company company = ... return company; }