Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态属性的名称已用作打开类型的声明属性名称_C#_Odata - Fatal编程技术网

C# 动态属性的名称已用作打开类型的声明属性名称

C# 动态属性的名称已用作打开类型的声明属性名称,c#,odata,C#,Odata,我有一个实体,看起来像这样: public class Item { public int Id { get; set; } public IDictionary<string, object> Settings { get; set; } } 我不希望这样做,因为我的JSON可能有一个同名的属性,这将导致错误:动态属性“Id”的名称已经用作open类型的声明属性名称 如何禁用OData所做的对开放类型的自动映射?解决方案是创建一个单独的实体。这将返回所需的结果

我有一个实体,看起来像这样:

public class Item
{
    public int Id { get; set; }

    public IDictionary<string, object> Settings { get; set; }
}
我不希望这样做,因为我的JSON可能有一个同名的属性,这将导致错误:动态属性“Id”的名称已经用作open类型的声明属性名称


如何禁用OData所做的对开放类型的自动映射?

解决方案是创建一个单独的实体。这将返回所需的结果

public class Item
{
    public int Id { get; set; }

    public OpenType Settings { get; set; }
}

public class OpenType
{
    public IDictionary<string, object> Settings { get; set; }
}
公共类项目
{
公共int Id{get;set;}
公共OpenType设置{get;set;}
}
公共类OpenType
{
公共IDictionary设置{get;set;}
}
参见msdn:
public class Item
{
    public int Id { get; set; }

    public OpenType Settings { get; set; }
}

public class OpenType
{
    public IDictionary<string, object> Settings { get; set; }
}