3

关于 C#,我的问题非常非常简单:

我们可以使用以下语法创建动态类型:

dynamic dObj = new { P1 = "a", P2 = 1, p3 = DateTime.Now };

对于相同的结果,有没有办法从字符串变量创建该对象?喜欢:

string sObj = @"new { P1 = "a", P2 = 1, p3 = DateTime.Now }";
dynamic dObj = [something].fromstring(sObj);

这个想法是从一个由字符串构建的对象中获取一个对象,或者我需要一个序列化器?

4

1 回答 1

2

这需要一个编译器。ExpandoObject 类几乎可以满足您的需求:

    dynamic bag = new ExpandoObject();
    bag.P1 = "a";
    bag.P2 = 1;
    bag.p3 = DateTime.Now;

这也解决了您原始代码的问题,匿名类型的成员仅具有内部可访问性。换句话说,您的 dObj 对象只能在位于同一程序集中的代码中使用。

于 2012-08-09T16:01:58.140 回答