1

我有一个习惯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

4

1 回答 1

1

ODataUntypedValue根据返回类型“XML/JSON”使用和序列化值解决了

例如

Value = new ODataUntypedValue
{                            
    RawValue = JsonConvert.SerializeObject(new int[] { 1, 2, 3 })
}
于 2019-04-12T15:43:43.747 回答