小编jac*_*ott的帖子

确保在MVC路由之前匹配WebAPI2路由

我有一个使用MVC和WebAPI2的Web应用程序.在匹配手动配置的MVC路由之前,我希望始终与WebAPI2属性路由匹配.我在打电话configuration.MapHttpAttributeRoutes()之前试过打电话,RouteConfig.RegisterRoutes(RouteTable.Routes)但这似乎不起作用.

有没有办法确保WebAPI2路由始终具有优先权?

c# asp.net-mvc asp.net-web-api asp.net-web-api2

6
推荐指数
1
解决办法
110
查看次数

Newtonsoft.Json两次序列化一些项目

我今天注意到Newtonsoft.Json的一些奇怪的输出,我不确定它是否与F#类型的交互或C#中可能发生的事情,所以我已经标记了两者.我有一个序列化的以下记录列表:

 type SplitTracker = 
  {  
     [<JsonIgnore>]   
     split            : SplitDefinition
     mutable start    : duration
     mutable ``end``  : duration
     mutable lapCount : int
     mutable duration : duration Option
  }   
Run Code Online (Sandbox Code Playgroud)

我序列化它,JsonConvert.SerializeObject 我得到以下奇数输出:

 "splits": [
  {
    "start@": "0.00",
    "end@": "0.00",
    "lapCount@": 0,
    "duration@": null,
    "start": "0.00",
    "end": "0.00",
    "lapCount": 0,
    "duration": null
  },
  {
    "start@": "0.00",
    "end@": "0.00",
    "lapCount@": 0,
    "duration@": null,
    "start": "0.00",
    "end": "0.00",
    "lapCount": 0,
    "duration": null
  }
Run Code Online (Sandbox Code Playgroud)

任何人都知道为什么会发生这种情况?数据是正确的,带有"@"符号的字段重复是问题.

f# json.net

5
推荐指数
1
解决办法
249
查看次数

F#输出参数和值类型

如果我传递对象的引用,但是不接受结构或基元,则以下f#函数效果很好:

let TryGetFromSession (entryType:EntryType, key, [<Out>]  outValue: 'T byref) =
    match HttpContext.Current.Session.[entryType.ToString + key] with 
             | null -> outValue <- null; false
             | result -> outValue <- result :?> 'T; true
Run Code Online (Sandbox Code Playgroud)

如果我尝试用C#调用它:

bool result = false;
TryGetFromSession(TheOneCache.EntryType.SQL,key,out result)
Run Code Online (Sandbox Code Playgroud)

我知道The Type bool must be a reference type in order to use it as a parameter 有没有办法让F#函数同时处理?

f# c#-to-f#

4
推荐指数
1
解决办法
223
查看次数

F#Array.reduce的性能

我在做一些F#实验时注意到,如果为Array编写我自己的reduce函数,它的执行效果要比内置的reduce更好.例如:

type Array with
    static member inline fastReduce f (values : 'T[]) =
        let mutable result = Unchecked.defaultof<'T>
        for i in 0 .. values.Length-1 do
            result  <- f result values.[i]
        result
Run Code Online (Sandbox Code Playgroud)

这似乎与内置的行为完全相同,Array.reduce但简单快了约2倍f

内置的一个更灵活吗?

performance f#

1
推荐指数
1
解决办法
212
查看次数

F#将XmlProvider数据转换为记录

我使用XmlProvider提取一些XML数据,我将从C#访问它.由于您不能直接从C#使用类型提供的字段,我需要创建它们的记录.我可以手工完成这个,但我相信这应该可以自动使用反射.如果我创建记录类型具有相同的名称和类型,在类型提供商的领域,我应该能够使用像FSharpValue.MakeRecord(typeof<MyType>,values) 这里values是对象的数组.

我不知道的是如何从类型提供程序中获取值数组,以及如何处理嵌套记录,例如:

    type Address =
    {
        Address1     : string
        City         : string
        State        : string
    }

    type Client =
    {
        Id        : int            
        FullName  : string
        Address   : Address
    }
Run Code Online (Sandbox Code Playgroud)

在这种情况下,客户端包含一个地址 我是否需要走树并在树叶上使用MakeRecord并继续工作?

f# type-providers

0
推荐指数
1
解决办法
84
查看次数