我有一个自定义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 }
}
我继续添加
使用类型为'System.Int32 []'的值实例化了ODataPrimitiveValue。 ODataPrimitiveValue只能包装可以表示为原始EDM类型的值
我尝试将int []添加到模型构建器 我尝试将类型添加到ODataCollectionValue
答案 0 :(得分:0)
使用ODataUntypedValue
解决,并根据返回类型“ XML / JSON”对值进行序列化
例如
Value = new ODataUntypedValue
{
RawValue = JsonConvert.SerializeObject(new int[] { 1, 2, 3 })
}