使用公共属性创建动态对象

时间:2015-12-10 09:07:56

标签: c#

我正在尝试创建一个内联创建的对象,但我想访问我在里面创建的属性,如下所示:

object x = new { text = "one", text2 = "two" };

if (x.text == "one") //can not acces this item in the object
{ 
    //do somthing
}

我知道我可以通过创建一个dynamic对象来完成这项工作但是我需要确保我将该属性拼写正确并且我不想这样做。 这段代码发生了什么,我无法访问里面的属性,如何在不使用动态对象的情况下执行此操作,并且有机会错误地输入属性名称?

2 个答案:

答案 0 :(得分:8)

使用var作为变量的类型:

var x = new { text = "one", text2 = "two" };

Console.WriteLine(x.text); // Fine, and suggested by Intellisense
Console.WriteLine(x.text1); // Compile-time error

请注意,这不是一个真正的动态对象"因为编译时已知属性名称和类型。所有发生的事情是C#编译器使用相关属性(以及构造函数和EqualsGetHashCodeToString的覆盖)自动为您创建类型。该类型的名称在C#中是不可写的,但是var允许您声明该类型的局部变量,允许编译时检查等。

var功能称为implicitly-typed local variables

new { ... }功能称为anonymous types

答案 1 :(得分:0)

试试这个:

`dynamic test = new { text = "one", text2 = "two" };
 var result = test.text;`
相关问题