【问题标题】:Convert string value to object property name ASP.net MVC4将字符串值转换为对象属性名称 ASP.net MVC4
【发布时间】:2014-03-26 14:44:46
【问题描述】:

是否有可能在 C# 中使用字符串值来创建对象属性? 像这样:

object obj;
obj.makePropperty("username","user1");
obj.makePropperty("firstName","jnah");
obj.makePropperty("year",2014);

String getValue = obj.username; 

【问题讨论】:

  • 你不能使用Dictionary吗?
  • 你有什么想法吗!
  • IDictionary dict = new Dictionary { { "Foo", "Bar" } };动态 dobj = dict.toexpando();我找不到 toexpando 定义!
  • 据我所知框架中没有 ToExpando 方法。这篇文章谈论创建你自己的。 stackoverflow.com/questions/6667273/…

标签: c# asp.net-mvc string asp.net-mvc-4 object


【解决方案1】:

我认为 ExpandoObject 是在 .NET 4.0 中引入的。你可以使用它。

public dynamic MyObject { get; private set; }

MyObject = new ExpandoObject();

((IDictionary<string, object>)sourceObjectCustomFieldsExpando)Add(
    <PropertyName>, <Value> );

与字典相比,它的唯一优点是稍后您可以使用点表示法访问属性。

((IDictionary<string, object>)MyObject)Add( "Foo", "bar" );

...

var value = MyObject.Foo;

【讨论】:

  • 我误会了,你能给我解释一下吗!
  • 您的问题必须准确无误。我已经在原帖中解释过了。如果您有具体问题,我很乐意尝试回答。
  • 你的建议对我不起作用@Craig,因为正如我所说,我想根据这样的字符串文本创建对象属性:object obj; obj.makePropperty("用户名","user1"); obj.makePropperty("firstName","jnah"); obj.makePropperty("年",2014);
【解决方案2】:

使用anonymous types,您可以像这样创建一个新对象:

var newObj = new { username = "user1", firstName = "jnah", year = "2014"};

或者,如果您有一个类来表示您的对象,如下所示:

public string username {get; set;}
public string firstName {get; set;}
public string year{get; set;}

var newObj = new myObj{ username = "user1", firstName = "jnah", year = "2014"};

更新:您还可以使用 Dictionary 或 KeyValuePairs 列表:

var objList= new List<KeyValuePair<string, string>>();

list.Add(new KeyValuePair<string, int>("username ", "user1"));
list.Add(new KeyValuePair<string, int>("firstName", "jnah"));
list.Add(new KeyValuePair<string, int>("year", "2014"));

【讨论】:

  • 问题是我想动态创建一个对象属性!
  • 对不起,我误会了。在这种情况下,按照 dkozl 的建议,使用 dictionary
  • 请给我解释一下如何使用iot!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多