Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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# 在C中创建具有多个终端和可能无效中间状态的流畅接口#_C#_State Machine_Fluent - Fatal编程技术网

C# 在C中创建具有多个终端和可能无效中间状态的流畅接口#

C# 在C中创建具有多个终端和可能无效中间状态的流畅接口#,c#,state-machine,fluent,C#,State Machine,Fluent,我试图创建一个流畅的界面,有两个皱纹 它有多个端点 它可能具有无效的中间状态 我可以处理其中任何一个,但两者都有问题。让我给出一个(稍微简化的)具体示例,假设我正在扩展流,并且流是可查找的 我想支持以下两个流程: stream.GoTo.Offset(x);//从头开始搜索 stream.GoTo.Offset(x).From(原点);//从指定的起点开始搜索,可能是终点 因此,我可以在偏移或From(两个端子)上结束。此外,不允许在开始前寻找一个点。这意味着,如果位置为10且长度为10

我试图创建一个流畅的界面,有两个皱纹

  • 它有多个端点
  • 它可能具有无效的中间状态
我可以处理其中任何一个,但两者都有问题。让我给出一个(稍微简化的)具体示例,假设我正在扩展流,并且流是可查找的

我想支持以下两个流程:

  • stream.GoTo.Offset(x);//从头开始搜索
  • stream.GoTo.Offset(x).From(原点);//从指定的起点开始搜索,可能是终点
因此,我可以在偏移或From(两个端子)上结束。此外,不允许在开始前寻找一个点。这意味着,如果位置为10且长度为1000,则
stream.GoTo.Offset(-100)
应失败,但
stream.GoTo.Offset(-100)。From(请参见korigin.End)
应成功

通常情况下,如果我有两个端子,我会按顺序应用各个部分,并且都很好;首先将偏移量添加到该位置,然后在“开始”处,添加0、减去原始位置或根据情况添加长度。但是,这对于无效的临时状态问题不起作用


很可能没有解决办法。我觉得我已经把它简化到了可以看到选项的程度,并将它们全部删除了。然而,我没有写很多流畅的界面,也许至少有一个工作我没有看到。任何帮助都将不胜感激,即使只是确认无法完成。

我不小心删除了我以前的评论
stream.GoTo.Offset(-100.Go()
:///code><代码>流.转到.偏移量(-100,参见原始码.End)
\o/
或func
stream.GoTo(x=>x.Offset(x))是的,我想。这令人失望。在这种简化的情况下,它看起来并不糟糕,但它确实会破坏所请求的流。这个计划是为了比这更大的东西。否则,
stream.Goto.Offset(-100,SeekOrigin.End)
stream.Seek(-100,SeekOrigin.End)
不远。我不小心删除了我以前的注释
stream.Goto.Offset(-100)。Go()
://code><代码>流.转到.偏移量(-100,参见原始码.End)
\o/
或func
stream.GoTo(x=>x.Offset(x))是的,我想。这令人失望。在这种简化的情况下,它看起来并不糟糕,但它确实会破坏所请求的流。这个计划是为了比这更大的东西。否则,
stream.Goto.Offset(-100,SeekOrigin.End)
stream.Seek(-100,SeekOrigin.End)
不远。