Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Silverlight的Duck打字库?_C#_.net_Silverlight_Duck Typing - Fatal编程技术网

C# Silverlight的Duck打字库?

C# Silverlight的Duck打字库?,c#,.net,silverlight,duck-typing,C#,.net,Silverlight,Duck Typing,有Silverlight图书馆吗?对于完整的.NETFramework有一些,但是我正在寻找一些更轻的东西。 你可以考虑使用一个基于DLR的语言,比如,通过询问“Silverlight Bub打字”,你是指接口的强类型自动实现吗?或者通过使用对象实例动态创建对象元数据 如果是后者的话,安东尼的推荐就恰到好处了。 在CLR(C#和VB.NET)上运行的强类型语言不能支持真正的动态类型。因此,您可以使用作为Silverlight DLR项目一部分提供的IronRuby或IronPython 如果你在

有Silverlight图书馆吗?对于完整的.NETFramework有一些,但是我正在寻找一些更轻的东西。

你可以考虑使用一个基于DLR的语言,比如

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

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

如果你在寻找前者,那么你在急切地寻找一个模拟库。 Silverlight支持各种开源模拟框架

Moq-(下载:)

RhinoMocks-(下载:)

AutoFac-(下载:)


TypeMock/SilverUnit-(下载:)

根据您对duck类型的理解,我希望在Silverlight上提供C#4.0和
dynamic
时,它会出现在C#4.0中。然后您可以选择哪些位是duck类型(
动态
)还是static类型(其他所有内容)。都在C#之内


我最近创建了一个我调用的实用程序。它使用Reflection.Emit动态生成实现接口的包装器类——这是一种在C#中实现duck类型的方法

不幸的是,它在Silverlight中不起作用。它在.NET3.5中运行得非常好,我的测试在SL环境中通过,但在SL运行时,我遇到了一个安全异常


我还没来得及弄明白,但代码非常简单。也许这段代码可以为您指明正确的方向?

支持Silverlight 4。它不仅允许duck类型静态实现,还允许动态实现。

感谢Justin,我指的是接口的自动实现。我只是没有意识到“mocking”是一个关键词——在谷歌搜索“duck typing+silverlight”时运气不好。从2010年的预览到目前为止,你肯定能够完成这种类型的duck typing。不幸的是,您无法使对象实现它尚未实现的接口。。。即使它符合接口的合同。换句话说,使用duck的代码必须依赖于dynamic,而不是iquecker。我希望他们在RTM ofr 4.0(和SL 4.0)中包含此功能,因为它将是抽象出框架类的杀手。好吧,没有计划实现您所描述的。谢谢Brian,我将仔细看看您的解决方案。
dynamic duck = /* pretty much anything */
duck.Quack();