如何在Silverlight 3 / WP7中使用类似于DynamicObject的东西?

时间:2011-01-05 10:26:41

标签: windows-phone-7 silverlight-3.0 dynamic-languages

如何使用动态语言运行时(DLR)或其他方式模拟SILVERLIGHT 3(!)和WP7(无C#4.0!)中的System.Dynamic.DynamicObject。

我想要做的是为数据绑定实现自动动态创建的属性。

2 个答案:

答案 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.0WP7无效。这意味着你不能这样做。至少不容易。

Silverlight不允许自定义标记扩展(things between {})。所以,这也不是一个选择。

您可以做的是为绑定创建自定义Behaviors,并使其与Dictionaries一起使用,可以容纳多个属性和值。