Ducklight的Duck打字库?

时间:2009-09-28 09:10:31

标签: c# .net silverlight duck-typing

Silverlight是否有duck typing库?有一些完整的.NET框架,但我正在寻找更轻松的东西。

5 个答案:

答案 0 :(得分:3)

您可以考虑使用基于DLR的语言,例如Python in silverlight

答案 1 :(得分:3)

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

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

如果你正在寻找前者,那么你就是在寻找一个模拟图书馆。 Silverlight支持无数的开源模拟框架。

Moq - 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

答案 2 :(得分:2)

根据您对鸭子类型的解释,我希望这可以在C#4.0和dynamic中到达,当它在Silverlight上可用时。然后你可以选择选择鸭子类型(dynamic)和静态类型(其他所有)。全部都在C#中。

dynamic duck = /* pretty much anything */
duck.Quack();

答案 3 :(得分:1)

我最近创建了一个名为"DynamicWrapper"的实用程序。它使用Reflection.Emit动态生成一个实现接口的包装类 - 一种在C#中实现duck typing的方法。

不幸的是,它在Silverlight中不起作用。它在.Net 3.5中工作得很好,我的测试在我的SL环境中传递,但在SL运行时,我得到了一个安全例外。

我没有时间弄明白,但代码很简单。也许这段代码可以指出你正确的方向?

答案 4 :(得分:0)

ImpromptuInterface支持Silverlight 4.它不仅允许鸭子打字静态实现,还允许动态实现。