Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.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# - Fatal编程技术网

C# 创建一个匿名对象,其中字符串是属性名

C# 创建一个匿名对象,其中字符串是属性名,c#,C#,我想使用以下代码创建一个对象: // eg "foo", "bar" public void MakeObject(string field, string val){ var update = new { field = val } ... do more things... } 我想要的结果对象是: { foo = "bar" } 但我一直得到: { field = "bar" } 看起来,您不是在寻找匿名对象,而是在寻找(实际上是IDictionary的一个

我想使用以下代码创建一个对象:

// eg "foo", "bar"
public void MakeObject(string field, string val){
  var update = new {
    field = val
  }

  ... do more things...
}
我想要的结果对象是:

{
 foo = "bar"
}
但我一直得到:

{
 field = "bar"
}

看起来,您不是在寻找匿名对象,而是在寻找(实际上是
IDictionary
的一个实现),例如


看起来,您不是在寻找匿名对象,而是在寻找(实际上是
IDictionary
的一个实现),例如


匿名类型只是您自己不键入的常规类型;当您这样做时:

new { field = val }
它定义了一个名为
field
,类型为
string
(从
string val
推断)的异常类型

不能让匿名类型假装为具有不同成员名称的类型

备选方案:

  • 使用字典

    new Dictionary<string, string> { { field, val } }
    
    newdictionary{{field,val}
    
  • 如果这是出于UI/数据绑定的目的,那么可以使用
    TypeDescriptor
    API做一些“有趣”的事情,让它假装有不同的名称(用于显示目的)。这是一个高级主题,但如果相关的话,我可以涵盖它

  • 可能涉及
    动态


这些选项中的任何一个对您的场景有多好都取决于使用您的对象的内容。对象序列化程序(JSON、XML等)的工作方式可能与UI数据绑定控件的工作方式非常不同,而UI数据绑定控件的工作方式可能与ORM的工作方式非常不同。那么:什么在使用它呢?

匿名类型只是常规类型,您自己不需要键入;当您这样做时:

new { field = val }
它定义了一个名为
field
,类型为
string
(从
string val
推断)的异常类型

不能让匿名类型假装为具有不同成员名称的类型

备选方案:

  • 使用字典

    new Dictionary<string, string> { { field, val } }
    
    newdictionary{{field,val}
    
  • 如果这是出于UI/数据绑定的目的,那么可以使用
    TypeDescriptor
    API做一些“有趣”的事情,让它假装有不同的名称(用于显示目的)。这是一个高级主题,但如果相关的话,我可以涵盖它

  • 可能涉及
    动态


这些选项中的任何一个对您的场景有多好都取决于使用您的对象的内容。对象序列化程序(JSON、XML等)的工作方式可能与UI数据绑定控件的工作方式非常不同,而UI数据绑定控件的工作方式可能与ORM的工作方式非常不同。那么:什么在消耗这个呢?

也许你需要一本字典?
var update={[field]:val}也许你需要一本字典?
var update={[field]:val}