如何使用动态语言运行时(DLR)或其他方式模拟SILVERLIGHT 3(!)和WP7(无C#4.0!)中的System.Dynamic.DynamicObject。
我想要做的是为数据绑定实现自动动态创建的属性。
答案 0 :(得分:2)
DLR可以与WP7一起使用 Iron Ruby支持来自version 1.1的Windows Phone 7。
DynamicObject
可用作.Net 4.0之前的扩展程序
如果您对使用C#以外的语言感到满意,那么这可能是一种选择 在http://msdn.microsoft.com/en-us/magazine/ff960707.aspx上有一篇关于在Windows Phone 7上使用IronRuby的文章。
作为替代方案,您可以使用匿名类型而不是动态类型吗?我假设您没有可能绑定的无限数量的选项。
如果您确实想使用匿名类型,则必须设置
[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("System.Windows")]
使框架能够解析绑定。
据推测,你是从外部系统获取动态对象的。您是否可以在应用程序和外部系统之间添加包装层,以将对象转换为POCO而不是动态对象。
答案 1 :(得分:0)
正如您所提到的,DLR
中.Net 4.0
C# 4.0
和WP7
无效。这意味着你不能这样做。至少不容易。
Silverlight不允许自定义标记扩展(things between {}
)。所以,这也不是一个选择。
您可以做的是为绑定创建自定义Behaviors
,并使其与Dictionaries
一起使用,可以容纳多个属性和值。