2

Silverlight是否有任何鸭子类型库?有一些成熟的 .NET 框架,但我正在寻找更轻的东西。

4

5 回答 5

3

您可能会考虑在 silverlight 中使用基于 DLR 的语言,例如Python

于 2009-09-28T09:36:10.760 回答
3

通过询问“Silverlight duck typing”,您是指接口的强类型自动实现吗?还是通过使用对象实例动态创建对象元数据?

如果是后者,安东尼的建议是正确的。在 CLR(C# 和 VB.NET)上运行的强类型语言不支持真正的动态鸭子类型。因此,您可以使用作为 Silverlight DLR 项目的一部分提供的 IronRuby 或 IronPython。

如果您正在寻找前者,那么您本质上是在寻找一个模拟库。Silverlight 支持无数的开源模拟框架。

起订量- http://code.google.com/p/moq/(下载:http : //moq.googlecode.com/files/Moq.Silverlight.4.0.812.4-bin.zip

RhinoMocks - http://ayende.com/projects/rhino-mocks.aspx(下载:http ://ayende.com/20/section.aspx/download/230 )

AutoFac - http://code.google.com/p/autofac/(下载:http ://autofac.googlecode.com/files/Autofac-1.4.4.572-SL3.zip )

TypeMock / SilverUnit - http://cthru.codeplex.com(下载:http ://cthru.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27748#DownloadId=69201 )

于 2009-09-28T10:40:03.230 回答
2

根据您对鸭式打字的解释,我希望这会出现在 C# 4.0 中,并且dynamic当它在 Silverlight 上可用时。然后,您可以选择哪些位是鸭子类型 ( dynamic) 与静态类型(其他所有内容)。全部在 C# 中。

dynamic duck = /* pretty much anything */
duck.Quack();
于 2009-09-28T11:11:20.280 回答
1

我最近创建了一个名为“DynamicWrapper”的实用程序。它使用 Reflection.Emit 动态生成实现接口的包装类——一种在 C# 中实现鸭子类型的方法。

不幸的是,它在 Silverlight 中不起作用。它在 .Net 3.5 中运行良好,并且我的测试在我的 SL 环境中通过,但在 SL 运行时,我遇到了安全异常。

我没有时间弄清楚,但代码非常简单。也许这段代码可以为您指明正确的方向?

于 2009-09-29T02:05:34.073 回答
0

ImpromptuInterface支持 Silverlight 4。它不仅允许鸭子类型化静态实现,还允许动态实现。

于 2011-03-14T20:57:03.910 回答