我有一种情况,客户端应用程序可以请求匹配特定条件的资源,如果匹配的资源不存在,则创建并缓存.对相同条件的后续请求将返回缓存的资源.
我可以通过PUT请求实现这一点来创建资源和后续的GET.但是,在我的特定场景中,要求客户端对我的系统的内部工作原理了解太多,即客户端不应该关心资源是否已经存在.
因此,如果客户端尚未存在,那么允许客户端发出创建资源的单个GET请求是否是ReSTful?
我正在尝试学习一些关于动态生成事件处理程序的知识,并且我很难尝试重新创建这种简单的情况:
public delegate void SomethingHappenedEventHandler(object sender, object args);
public event SomethingHappenedEventHandler SomethingHappened;
// This is the event handler that I want to create dynamically
public void DoSomething(object a, object b)
{
DoSomethingElse(a, b);
}
public void DoSomethingElse(object a, object b)
{
Console.WriteLine("Yay! " + a + " " + b);
}
Run Code Online (Sandbox Code Playgroud)
我用反射器为DoSomething方法生成IL,它给了我:
.method public hidebysig instance void DoSomething(object a, object b) cil managed
{
.maxstack 8
L_0000: ldarg.0
L_0001: ldarg.1
L_0002: ldarg.2
L_0003: call instance void MyNamespace::DoSomethingElse(object, object)
L_0008: ret …Run Code Online (Sandbox Code Playgroud) 我经常看到带签名的函数,例如:
let f (lower: int) (upper: int) =
//...
Run Code Online (Sandbox Code Playgroud)
其中lower和upper表示函数将要操作的某个范围的上限和下限.此类型签名缺少的是有关上限和下限是包含还是排除的信息.在美好的一天,信息将在文档中...
在我看来,使用类型表示数学区间会更好,因此API可以指定确切的间隔类型,如果调用者未能提供它,则会出现编译错误.我已经尝试过搜索这样的实现,但还没有想出任何东西,因此这个问题是看是否有人知道合适的实现.我想要一个可以从.NET语言中使用的语言,但是我可以借用其他想法的实现也很有用.
理想情况下,设计应允许下面显示的功能签名.{}包含标准区间表示法中的区间规范 - 这应该用相关类型替换:
let f1 (interval: { [,] }) = // inclusive lower and upper bounds
//..
let f2 (interval: { (,) }) = // exclusive lower and upper bounds
//..
let f3 (interval: { [,) }) = // inclusive lower and exclusive upper bounds
//..
let f4 (interval: { [?,) }) = // infinite lower and exclusive upper bounds
//..
let f5 …Run Code Online (Sandbox Code Playgroud) 我使用的是VS2010,SpecFlow 1.9.0,NUnit 2.6.2和ReSharper 7.1.我有一个从示例中获取的功能文件:
Feature: SpecFlowFeature1
In order to avoid silly mistakes
As a math idiot
I want to be told the sum of two numbers
@mytag
Scenario: Add two numbers
Given I have entered 50 into the calculator
And I have entered 70 into the calculator
When I press the add button
Then the result should be 120 on the screen
Run Code Online (Sandbox Code Playgroud)
我已在单独的F#程序集中实现了步骤定义:
[<TechTalk.SpecFlow.Binding>]
module StepDefinitions
open TechTalk.SpecFlow
open NUnit.Framework
let [<Given>] ``I have entered (.*) into the calculator`` (a: …Run Code Online (Sandbox Code Playgroud) 为了好玩,我一直在玩F#中的类型类,使用这里显示的想法.我创建了一个Next类型类来表示具有"后继"的值,例如下一个1 = 2,下一个今天=明天等:
type Next = Next with
static member (++) (Next, x:int) = x + 1
static member (++) (Next, x:DateTime) = x.AddDays 1.0
let inline next x = Next ++ x
let v1 = next 1 // v1 = 2
let v2 = next DateTime.Now // v2 = Now + 1 day
Run Code Online (Sandbox Code Playgroud)
现在我想在泛型类中使用"nextable"类型:
type UsesNextable<'T>(nextable: 'T) = // Compile error 1
member inline this.Next =
let v = next nextable // Compile error 2
v.ToString()
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误: …