在运行时从C#中的ArrayList生成自定义对象
我将以下内容以纯字符串形式存储在ArrayList中,每行表示列表中某个项目的值,是否有方法以以下样式生成动态对象: [左操作数是属性]= [右操作数是该属性的值]在运行时从C#中的ArrayList生成自定义对象,c#,asp.net,.net,dynamic,functional-programming,C#,Asp.net,.net,Dynamic,Functional Programming,我将以下内容以纯字符串形式存储在ArrayList中,每行表示列表中某个项目的值,是否有方法以以下样式生成动态对象: [左操作数是属性]= [右操作数是该属性的值] object.data.details[1].tid=711 object.data.details[1].type="ongoing" object.data.details[1].attach="node1" object.data.details[1].flowing[1].comid="component1" object.
object.data.details[1].tid=711
object.data.details[1].type="ongoing"
object.data.details[1].attach="node1"
object.data.details[1].flowing[1].comid="component1"
object.data.details[1].flowing[1].system-usage.RAM="12%"
object.data.details[1].flowing[1].system-usage.CPU="3%"
object.data.details[1].flowing[1].system-usage.Pages=3
object.data.details[1].flowing[2].comid="component2"
object.data.details[1].flowing[2].system-usage.RAM="9%"
object.data.details[1].flowing[2].system-usage.CPU="2%"
object.data.details[1].flowing[2].system-usage.Pages=1
object.data.details[1].flowing[3].comid="component3"
object.data.details[1].flowing[3].system-usage.RAM="7%"
object.data.details[1].flowing[3].system-usage.CPU="7%"
object.data.details[1].flowing[3].system-usage.Pages=5
object.data.details[2].tid=712
object.data.details[2].type="ongoing"
object.data.details[2].attach="node2"
object.data.details[2].flowing[1].comid="component1"
object.data.details[2].flowing[1].system-usage.RAM="12%"
object.data.details[2].flowing[1].system-usage.CPU="3%"
object.data.details[2].flowing[1].system-usage.Pages=3
object.data.details[2].flowing[2].comid="component2"
object.data.details[2].flowing[2].system-usage.RAM="9%"
object.data.details[2].flowing[2].system-usage.CPU="2%"
object.data.details[2].flowing[2].system-usage.Pages=1
object.data.details[2].flowing[3].comid="component3"
object.data.details[2].flowing[3].system-usage.RAM="7%"
object.data.details[2].flowing[3].system-usage.CPU="7%"
object.data.details[2].flowing[3].system-usage.Pages=5
object.data.details[3].tid=713
object.data.details[3].type="ongoing"
object.data.details[3].attach="node2"
object.data.details[3].flowing[1].comid="component1"
object.data.details[3].flowing[1].system-usage.RAM="12%"
object.data.details[3].flowing[1].system-usage.CPU="3%"
object.data.details[3].flowing[1].system-usage.Pages=3
object.data.details[3].flowing[2].comid="component2"
object.data.details[3].flowing[2].system-usage.RAM="9%"
object.data.details[3].flowing[2].system-usage.CPU="2%"
object.data.details[3].flowing[2].system-usage.Pages=1
object.data.details[3].flowing[3].comid="component3"
object.data.details[3].flowing[3].system-usage.RAM="7%"
object.data.details[3].flowing[3].system-usage.CPU="7%"
object.data.details[3].flowing[3].system-usage.Pages=5
<pre>
var x = data.details[1].flowing[2].system_usage.Pages;
</pre>
我希望有一个具有以下结构的对象:
object.data.details[i].flowing[j].comid="component1"
if i=j=1
object.data.details[i].flowing[j].system-usage.RAM="9%"
if i=1 and j=2
换句话说,我需要生成一个动态对象,该对象可以将arraylist作为属性列表,就像我们可以通过以下方式访问asp.net gridview中显示的任何值一样:
gridview1.rows[i].someproperty[j].value = "something"
我尝试使用ExpandoObject,但也失败了。我尝试使用反射,但如果我在同一线程中生成~1K个对象,它会消耗大量内存。好的,伙计们,我想出了如何做到这一点,以防有人会遇到此问题,这里是解决方案:
var x=data.details[1]。正在流动的[2]。system_usage.Pages;
是的,“有一种方法可以生成以下样式的动态对象”,但它有点过于宽泛。。。旁注:使用JSON会让你的生活更轻松……有趣的是;这个列表实际上是从JSON对象生成的,但是使用了我构建的自定义处理器,这样我就可以按照发布问题的方式得到结果@AlexeiLevenkovand请注意,该结构不是固定的,否则我可以构建一个类来序列化这些字符串值:(@hassanlerhamy-我已经删除了我的答案,因为它似乎不是您需要的,我建议您对这个问题提供更多的细节,因为目前还不完全清楚您需要什么;您似乎在说您想要获取一些JSON,转换它,将其转换为一组字符串,然后将这些字符串转换回发电机ic对象。这个imho没有多大意义-也许如果你能澄清这个自定义转换过程是什么,以及为什么你不能将一个动态对象转换成另一个,它可能更有意义:)@StephenByrne-bro忘了json和转换,如果你有上面显示的数据,你能不能动态生成一个动态对象?这是我的问题