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

Windows phone 7 如何在Silverlight 3/WP7中使用类似于DynamicObject的东西?,windows-phone-7,silverlight-3.0,dynamic-languages,Windows Phone 7,Silverlight 3.0,Dynamic Languages,如何使用动态语言运行库(DLR)或其他工具来模拟SILVERLIGHT 3(!)和WP7(无C#4.0!)中的System.Dynamic.DynamicObject 我想做的是为数据绑定实现自动动态创建的属性。正如您所提到的,DLR与.Net 4.0和C#4.0在WP7中不可用。这意味着你做不到。至少不容易 Silverlight不允许自定义标记扩展({}之间的东西)。所以,这也不是一个选择 您可以做的是为绑定创建自定义的行为,并使它们与可容纳尽可能多的属性和值的词典一起使用。DLR可与WP7

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


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

正如您所提到的,
DLR
.Net 4.0
C#4.0
WP7
中不可用。这意味着你做不到。至少不容易

Silverlight不允许自定义标记扩展({}之间的东西)。所以,这也不是一个选择


您可以做的是为绑定创建自定义的
行为
,并使它们与可容纳尽可能多的属性和值的
词典一起使用。

DLR可与WP7一起使用。
Iron Ruby从支持Windows Phone 7

DynamicObject
是.Net 4.0之前的一个扩展

如果您喜欢使用C语言以外的语言,那么这可能是一种选择。
有一篇关于在WindowsPhone7上使用IronRuby的好文章

作为替代方案,您可以使用匿名类型而不是动态类型吗?我假设没有无限多的选项可以约束你

如果确实要使用匿名类型,则必须设置

[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("System.Windows")]
使框架能够解析绑定


大概是从外部系统获取动态对象。无法在应用程序和外部系统之间添加包装层,以将对象转换为POCO而不是动态对象。

这就是问题所在。。我知道行为的解决方案。。但是我不太喜欢。。那么动态语言运行库(dlr.codeplex.com)呢,它也包含DynamicObject。。它是否适用于SL3?为什么DynamicObject适用于Ruby而不适用于具有DLR的C?@knom IronRuby项目包括一份Microsoft.Scripting.Core
的副本,其中包含
DynamicObject
您可以自己尝试包含对它的引用。您提到了数据绑定,以防您还不知道这一点:数据绑定不能绑定到Silverlight中的动态对象,即使在Silverlight 4中使用DynamicObject(或任何其他IDynamicMetaObjectProvider)。到目前为止,只有WPF4具有这种能力。