C#和Javascript中的动态对象属性

时间:2009-02-12 11:15:46

标签: c# json dynamic-languages

我在数据库中有一个表格,用于我的应用程序中的各种设置。可以随时添加或更改这些设置。我想将它们从数据库中拉出到一个对象中,并在我的服务器代码(C#)和客户端代码(JS)中引用它们。

SettingGroup SettingName        type      value
Core         defaultPagingSize  numeric   5
Core         pagingType         text      dynamic
Ecommerce    showGallery        boolean   true

在javascript中,我可以将它们放入JSON对象并像这样引用它们:

var size = settings.core.defaultPagingSize;

我在C#中有类似的方式吗?

int size = settings.core.defaultPagingSize;

2 个答案:

答案 0 :(得分:2)

没有

将为.NET和C#4.0添加的新dynamic关键字将处理您正在寻找的内容,但在当前的.NET和C#版本中,不支持此。

你应该可以让它工作:

int size = settings["core"]["defaultPagingSize"].ToInt32();

或类似的东西。

答案 1 :(得分:2)

在.NET中,最直接的答案是使用某种字典(可能是嵌套的)。 C#4.0引入了一些动态概念,但是你需要编写一些代码才能让它像javascript一样运行。

或者,将它们存储为平面列表中的类型记录并使用LINQ:

var setting = settings.Single(x=>x.Group == "Core"
         && x.Name == "defaultPagingSize");
int value = int.Parse(setting.Value);