Ine*_*elp 3 c# properties dynamic
我在ActionScript中工作了很多,我很高兴看到它与C#非常相似,但有一点是我缺少的,那就是"动态引用".
例如,可以使用数组运算符[]完成动态引用.因此,您也可以通过some_thing.something_else以下两种方式访问该属性:
some_thing["something_else"]
// or
some_thing[some_var] // where some_var is a variable holding a string
// e.g.: some_var = "something_else";
Run Code Online (Sandbox Code Playgroud)
换句话说,数组语法等同于指定属性本身.
动态引用对象的另一个选项是使用eval()全局函数.
所以,我的问题是:是否可以以类似于ActionScript的方式引用C#中的属性?
我能看到这样做的唯一方法就是使用动力学,尤其是动力学ExpandoObject.在ExpandoObject课堂上你可以做以下事情:
dynamic employee;
employee = new ExpandoObject();
employee.Name = "John Smith";
employee.Age = 33;
Run Code Online (Sandbox Code Playgroud)
尽管employee没有任何这些属性,这段代码将编译和工作.它不仅可以工作,而且动态属性甚至可以强类型化.
按键访问属性也很容易. ExpandoObject实现IDictionary<string,object>,所以它像一个垂头丧气一样简单:
var dictEmployee = employee as IDictionary<string,object>;
Debug.WriteLine(dictEmployee["Age"].ToString);
Run Code Online (Sandbox Code Playgroud)
此代码将导致33打印到调试输出中.
我不建议普遍使用这种方法,但它偶尔会派上用场.
| 归档时间: |
|
| 查看次数: |
1303 次 |
| 最近记录: |