从C#中的字符串创建动态类型

时间:2012-08-09 15:49:29

标签: c# string object dynamic

关于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);

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

1 个答案:

答案 0 :(得分:2)

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

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

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