Ресурс кастинга COSMOS БД в интерфейс -- c# поле с участием azure-cosmosdb пол Связанный проблема

Cosmos Db Casting Resource To interface


0
vote

проблема

русский

Если я хочу вернуть объект на основе интерфейса в Cosmodb, как бы я это сделал? Мой интерфейс:

 <код> namespace Test {    public interface IPerson    {         int Age { get; set; }    }     public class Person : IPerson    {       public int Age { get; set; }     } }   

Мой метод cosmosdb:

 <код>     public async Task<IPerson> FleetUpdate(IPerson person)      try         {             var res = await docClient.UpsertDocumentAsync(UriFactory.CreateDocumentCollectionUri(dbname, colName), person);              IPerson person = (dynamic)res.Resource;             return person;         }         catch (Exception ex)         {              throw ex;         }   

Я получаю сообщение об ошибке:

 <код>  Unable to cast object of type 'Microsoft.Azure.Documents.Document' to type 'CabbyTech.FleetOps.Classes.IFleet'.   

Как я должен бросить ответ на человека или IPERSON?

Английский оригинал

If I want to return an object based on a Interface in CosmoDb how would I do it? My Interface:

namespace Test {    public interface IPerson    {         int Age { get; set; }    }     public class Person : IPerson    {       public int Age { get; set; }     } } 

My CosmosDb method:

    public async Task<IPerson> FleetUpdate(IPerson person)      try         {             var res = await docClient.UpsertDocumentAsync(UriFactory.CreateDocumentCollectionUri(dbname, colName), person);              IPerson person = (dynamic)res.Resource;             return person;         }         catch (Exception ex)         {              throw ex;         } 

I am getting an error:

 Unable to cast object of type 'Microsoft.Azure.Documents.Document' to type 'CabbyTech.FleetOps.Classes.IFleet'. 

How should I cast the response to a Person or IPerson?

</div
     
         
         

Список ответов

1
 
vote
vote
Лучший ответ
 
 <код>     public async Task<T> GetByIdAsync(Guid id)     {         try         {             var cosmosDbClient = CosmosDbClient();             var document = await cosmosDbClient.ReadDocumentAsync(id, new RequestOptions             {                 PartitionKey = ResolvePartitionKey(id)             });              return JsonConvert.DeserializeObject<T>(document.ToString());         }         catch (DocumentClientException e)         {             if (e.StatusCode == HttpStatusCode.NotFound)             {                 throw new EntityNotFoundException();             }              throw;         }     }   
<Р> просто изменить его в соответствии с кодом, здесь я использую JsonConvert, чтобы получить тип обратно
 
    public async Task<T> GetByIdAsync(Guid id)     {         try         {             var cosmosDbClient = CosmosDbClient();             var document = await cosmosDbClient.ReadDocumentAsync(id, new RequestOptions             {                 PartitionKey = ResolvePartitionKey(id)             });              return JsonConvert.DeserializeObject<T>(document.ToString());         }         catch (DocumentClientException e)         {             if (e.StatusCode == HttpStatusCode.NotFound)             {                 throw new EntityNotFoundException();             }              throw;         }     } 

just change it to fit your code, here i use JsonConvert to get the type back

</div
 
 
 
 

Связанный проблема

105  Почему C # реализует методы как не виртуальные по умолчанию?  ( Why c sharp implements methods as non virtual by default ) 
В отличие от Java, почему C # методы лечения как не виртуальные функции по умолчанию? Скорее всего, это проблема производительности, а не на других возможных ...

0  Не читайте текстовые данные на таблицу SQL в C #  ( Not reading text data to sql table in c sharp ) 
Поэтому я следовал большему количеству помощи, которую я мог найти здесь. Я создал программу C #, которая читает из текстового файла и вставляет в таблицу баз...

0  Создание ссылки IPC между плагинами APC Java и C #  ( Establishing ipc link between a java app and c based plugins ) 
У нас есть приложение Java, а также ряд плагинов C #, для других приложений (например, Excel), которые могут взаимодействовать с основным приложением. Слой св...

1  Получение строки сразу после вставки возвращается нет результата  ( Getting row right after insert returns no result ) 
Я бегут тесты подразделения, и когда я пытаюсь вставить данные в базу данных и получить его сразу после того, как я ничего не получаю (я пробовал с <код> Data...

0  C # Исключение, где емкость ниже, чем количество  ( C sharp exception where capacity is lower than count ) 
Я ударю исключение со списком в C #, когда добавляю элемент в списке. Я не могу видеть ничего конкретного там. <Код> tempList.ForEach(tempDis => alloc.ListD...

1  Visual Studio C # KeyDown блокирует друг друга  ( Visual studio c sharp keydown blocking each other ) 
Есть ли способ сделать два ключа работать одновременно, поэтому они не блокируют друг друга? <код> private void multiplayer_KeyDown(object sender, KeyEv...

5  Использование Litjson в Unity3D  ( Using litjson in unity3d ) 
2 вопроса. 1) Можно ли использовать библиотеку Litjson AS так же, как и сценарии в JavaScript? Это действительно общий вопрос о том, чтобы иметь возможность...

8  Почему я не могу удалить это cookie?  ( Why cant i delete this cookie ) 
Хорошо, вот 411 - у меня есть следующий обработчик событий в моем файле Global.Asax.cs: <код> private void Global_PostRequestHandlerExecute(object sender, E...

1  WCF Callback Doblocks даже с «iSineynchronInationContext = False»  ( Wcf callback deadlocks even with usesynchronizationcontext false ) 
Я застрял с проблемой, которую я не могу понять. Проблема связана с синхронизацией между потоками на стороне клиента, но я не могу найти корневую причину эт...

9  DataTable не выпускает память  ( Datatable does not release memory ) 
У меня есть процесс загрузки данных, который загружает большую сумму данных в DataTable, затем выполняет некоторые данные, но каждый раз, когда задание заверш...

0  Написание одного символа за раз в приложении консоли C #?  ( Writing one character at a time in a c sharp console application ) 
Я не уверен, как это объяснить ... В основном я хочу иметь возможность писать строки текста в консоли, как старые RPG, используемые для записи диалога, один...

0  Соединение не было закрыто. Текущее состояние соединения открыто  ( Connection was not closed connections current state is open ) 
Это дает сообщение об ошибках не было закрыто. Текущее состояние соединения открыто. Пожалуйста, помогите с кодом. <код> private void comboBox1_SelectedIn...

0  WCF Post Method Получить ошибку 400 плохой запрос  ( Wcf post method get error 400 bad request ) 
Я использую метод WCF Post, как только я добавил PARAMETER POST на службу, его ошибка возврата 400 плохой запрос, если я оставил параметр пустой, он может пол...

5  сериализовать два разных экземпляра в списке на одну строку JSON  ( Serialize two different instances in a list to a single json string ) 
У меня есть два типа классов: <код> public class HolidayClass { public int ID { get; set; } public string Name { get; set; } public DateTime Sta...

0  Как загрузить каталог на FTP, используя ftplib?  ( How to upload directory to ftp using ftplib ) 
У меня проблемы с загрузкой Все файлы на FTP: я использую ftplib . У меня есть функция для загрузки: <код> Proj executable not found. Please set PROJ_DIR v...