динамически добавлять массив к ресурсу во время выполнения - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть пользовательский ODataResourceSerializer, который при некоторых условиях добавляет новые свойства к ресурсу, который отлично работает.

Я пытаюсь добавить новое простое свойство int []

ресурс - это динамический ресурс, который зарегистрирован во время выполнения и не имеет этих свойств в модели.

этот код

case TypeX tx:

  propertiesToReturn.Add(new ODataProperty()
     {
        Name = "TypeX",
        Value = new ODataCollectionValue()
        {
           Items = new int[] {1,2,3}
        }
     });

дает мне, когда ресурс отправляется на ODataJsonLightPropertySerializer.WriteCollectionProperty

Тип с именем System.Int32 [] не может быть разрешен моделью.Когда модель доступна, каждое имя типа должно соответствовать допустимому типу.

и при попытке добавить значение непосредственно в свойство odata

new ODataProperty()
{
    Value = new int[] { 1, 2, 3 }   
}

Я получаю при добавлении

ODataPrimitiveValue был создан со значением типа 'System.Int32 []'.ODataPrimitiveValue может переносить только значения, которые могут быть представлены как примитивные типы EDM

Я попытался добавить int [] в построитель моделей. Я попытался добавить тип в ODataCollectionValue

1 Ответ

0 голосов
/ 12 апреля 2019

решено с использованием ODataUntypedValue и сериализацией значения в соответствии с типом возврата "XML / JSON"

например

Value = new ODataUntypedValue
{                            
    RawValue = JsonConvert.SerializeObject(new int[] { 1, 2, 3 })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...