1
645
既然我写了你所指的msdn文章,我想我必须回答这个问题。 首先,我预料到了这个问题,这就是为什么我写了一篇博客文章,展示了Expandoobject的一个或多或少真实的用例: Dynamic in C# 4.0: Introducing the ExpandoObject . 很快,Expandoobject可以帮助您创建复杂的层次对象。例如,假设您在字典中有一个字典:
层次结构越深,代码越难看。通过Expandoobject,它保持优雅和可读性。
第二,正如已经指出的,Expandoobject实现了InotifyPropertyChanged接口,它为您提供了比字典更多的对属性的控制。 最后,可以向expandoobject添加事件,如下所示:
|
2
74
一个优点是绑定场景。数据网格和属性网格将通过typescriptor系统获取动态属性。此外,WPF数据绑定将了解动态属性,因此WPF控件比字典更容易绑定到Expandoobject。 在某些情况下,与动态语言的互操作性也可能是一个考虑因素,动态语言期望的是DLR属性而不是字典条目。 |
3
41
对我来说,真正的好处是XAML完全可以轻松地进行数据绑定:
…
…
|
4
27
与基于
|
5
19
这都是为了程序员的方便。我可以想象用这个对象编写快速而脏的程序。 |
6
14
我认为它将有一个句法上的好处,因为您将不再使用字典来“伪造”动态添加的属性。 我认为,它可以与动态语言互操作。 |
7
9
很好的例子 MSDN article 关于使用 扩展对象 用于为传入的结构化数据(即XML、JSON)创建动态即席类型。 我们也可以将代表分配给 扩展对象 的动态属性:
因此,它允许我们在运行时向动态对象注入一些逻辑。 因此,与lambda表达式、闭包、动态关键字和 DynamicObject class 我们可以在C代码中引入一些函数式编程的元素,这是我们从动态语言如javascript或php中了解到的。 |
8
4
有些情况下这很方便。例如,我将把它用于模块化的shell。每个模块定义它自己的配置对话框数据绑定到它的设置中。我为它提供了一个expandoobject作为dataContext,并将值保存在我的配置存储中。这样,配置对话框编写器只需绑定到一个值,它就会自动创建和保存。(并提供给模块使用这些设置) 它比字典更容易使用。但每个人都应该知道,在内部,它只是一本字典。 它就像LINQ只是句法上的糖分,但有时会让事情变得更容易。
所以直接回答你的问题:写起来容易,读起来也容易。但从技术上讲,它本质上是
|
9
-1
我认为这只会起作用,因为每件事都有一个toString(),否则你必须知道它是什么类型,并将“object”强制转换为那个类型。 其中一些比其他的更有用,我正在努力彻底。
如果你能一次钻取多个层面,那就太好了。
这不是最好的例子,想象一下在你自己的项目中优雅的使用。 很遗憾,您不能让代码构建其中的一些,并将结果推送到IntelliSense。不过,我不确定这会如何运作。 如果他们既有成员又有价值,那就好了。
|
10
-2
在valuetuples之后,expandoobject类的用途是什么? 这6行代码使用expandoobject:
可以用元组在一行中写入:
除了元组语法之外,您还具有强大的类型推断和intlisense支持。 |
Linesofcode · 错误未指定sqlcese40。dll 7 年前 |
Arvo Bowen · 如何使用父控件的默认字体创建用户控件? 8 年前 |
Asdfg · 如何解析此文本并构建对象 9 年前 |
qakmak · WPF win8平板电脑模式键盘隐藏屏幕底部的项目 9 年前 |
DeJaVo · .NET4到.NET4.5运行时的更改是什么 9 年前 |