在 运行 时间内将数组动态添加到资源

dynamically adding an array to a resource in run time

我有一个自定义 ODataResourceSerializer,它在某些情况下可以向资源添加新属性,效果非常好。

我正在尝试添加一个新的简单 int[] 属性

该资源是在运行时注册的动态资源,在模型上没有这些属性。

此代码

case TypeX tx:

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

给我 whrn 资源发送到 ODataJsonLightPropertySerializer.WriteCollectionProperty

A type named 'System.Int32[]' could not be resolved by the model. When a model is available, each type name must resolve to a valid type.

并且在尝试将值直接添加到 odata 时 属性

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

我继续添加

An ODataPrimitiveValue was instantiated with a value of type 'System.Int32[]'. ODataPrimitiveValue can only wrap values which can be represented as primitive EDM types

我尝试将 int[] 添加到模型构建器 我尝试将类型添加到 ODataCollectionValue

使用 ODataUntypedValue 解决并根据 return 类型序列化值 "XML/JSON"

例如

Value = new ODataUntypedValue
{                            
    RawValue = JsonConvert.SerializeObject(new int[] { 1, 2, 3 })
}