Tag: f#

xUnit v1测试出现在xUnit GUI(xunit.gui.clr4.exe)中但不出现在VS 2012测试资源管理器中

我有一个F#类库,其中包含使用NuGet安装的“xUnit.net”和“xUnit.net Runners”软件包。 我有以下代码: module XUnitTest open Xunit [] let Test () = do Assert.True (1 = 2) () 当我运行xUnit GUI(NuGet添加到(projectdirectory)\ packages \ xunit.runners.1.9.1 \ tools的xunit.gui.clr4.exe)并加载由该项目构建的程序集时,Test()方法出现,并且当我按预期运行时失败。 但是,无论我重建,重启等多少次,我都无法让测试出现在VS 2012的测试资源管理器中。如果我单击全部运行,则会弹出构建输出窗口,但不会发生任何其他情况。 为此,我还安装了xUnit.net Extensions,但我不认为它们对我正在尝试做的事情是必要的。 这也没有帮助。 如果我能提供更多信息,请告诉我,谢谢你的阅读!

是否有用于在运行时validation动态程序集的MSIL的API?

使用Reflection.Emit在运行时构建程序集时,我想在保存到光盘之前validation程序集MSIL。 像PEVerify一样,但在运行时。 有这样的API吗?

我可以为两个我不直接控制的类添加隐式转换吗?

我希望能够在两个不相容的类之间隐式转换。 其中一个类是Microsoft.Xna.Framework.Vector3 ,另一个类只是F#项目中使用的Vector类。 我正在使用XNA在C#中编写一个3D游戏,并且 – 虽然它是用3D绘制的,但游戏只在两个维度上进行(它是一个鸟瞰图)。 F#类使用2D矢量处理物理: type Vector SuperUnit> = | Cartesian of ‘t * ‘t | Polar of ‘t * float member this.magnitude = match this with | Cartesian(x, y) -> x.newValue(sqrt (x.units ** 2.0 + y.units ** 2.0)) | Polar(m, _) -> m.newValue(m.units) member this.direction = match this with | Cartesian(x, y) […]

C#和F#强制转换 – 特别是’as’关键字

在C#我可以这样做: var castValue = inputValue as Type1 在F#中,我可以这样做: let staticValue = inputValue :> Type1 let dynamicValue = inputValue :?> Type1 但它们都不等同于C#的关键字。 我想我需要为F#中的等价物做一个匹配表达式 match inputValue with | 😕 Type1 as type1Value -> type1Value | _ -> null 它是否正确?

用于IEnumerable的C#实现的F#Seq模块?

F#有一堆标准的序列运算符,我从Mathematica的经验中了解和喜爱。 F#现在得到了很多关注,当它一般发布时,我打算经常使用它。 现在,由于F#尚未普遍发布,我无法在生产代码中真正使用它。 LINQ使用类似SQL的名称来实现其中一些运算符(例如’select’是’map’,’where’是’filter’),但我找不到’fold’,’iter’或’partition’的实现。 有没有人见过标准序列运算符的C#实现? 这是某人应该写的东西吗?

如何将`where T:U`generics类型参数约束从C#转换为F#?

F#给我带来了类型推理规则的一些麻烦。 我正在编写一个简单的计算构建器,但无法正确获取我的generics类型变量约束。 我想要的代码在C#中如下所示: class FinallyBuilder { readonly Action finallyAction; public FinallyBuilder(Action finallyAction) { this.finallyAction = finallyAction; } public TB Bind(TA x, Func cont) where TA : TZ { // ^^^^^^^^^^^^^ try // this is what gives me a headache { // in the F# version return cont(x); } finally { finallyAction(x); } } } 到目前为止,我为F#版本提出的最佳(但非编译代码)是: […]

F#动态对象访问

有没有办法在F#中访问类似于C#dynamic的DLR对象(例如,DynamicObject子类实例)成员(属性和方法)?

在WPFcanvas上的给定点处居中文本

我有一个Controls.Canvas有几个形状,并希望添加以给定点为中心的文本标签(我正在绘制带有标记顶点的树)。 在WPF中以编程方式执行此操作的最简单方法是什么? 我已经尝试设置RenderTransform并调用Controls.Canvas.SetLeft等,但都没有将标签放在我想要的位置。 WPF似乎只支持在给定的左,右,顶部和底部坐标上定位,而不是以给定坐标为中心,当构造Canvas时, Width属性为NaN , ActualWidth属性为0.0 。

在C#中访问F#区分联合类型数据的最简单方法是什么?

我试图了解C#和F#可以一起玩的程度。 我从F#for Fun&Profit博客中获取了一些代码,该博客执行基本validation,返回一个有区别的联合类型: type Result = | Success of ‘TSuccess | Failure of ‘TFailure type Request = {name:string; email:string} let TestValidate input = if input.name = “” then Failure “Name must not be blank” else Success input 试图在C#中使用它时; 我可以找到访问成功和失败的值的唯一方法(失败是一个字符串,成功是请求再次)是大讨厌的演员表(这是很多打字,并需要输入我希望的实际类型推断或在元数据中可用): var req = new DannyTest.Request(“Danny”, “fsfs”); var res = FSharpLib.DannyTest.TestValidate(req); if (res.IsSuccess) { Console.WriteLine(“Success”); var result […]

如何使用F#lambda创建Linq表达式树?

以下是C#中可以做的事情 – var two = 2; System.Linq.Expressions.Expression<System.Func> expr = x => x * two; expr.Compile().Invoke(4); // returns 8 我希望在F#中做到精确的等价物。 这是我尝试过的,但没有编译 – let two = 2 let expr = (fun x -> x * two) : System.Linq.Expressions.Expression<System.Func> expr.Compile().Invoke(4) // desired to return 8 也许可以预见,编译在第2行失败,出现以下错误 – “This function takes too many arguments, or is used in a […]