繁体   English   中英

如何使用C#明确方法调用顺序?

[英]How can I make method invocation order explicit with C#?

如何使用C#明确方法调用顺序?

我想在代码中明确指出一种方法应该在另一种方法之前调用,这有点类似于JavaScript中的回调方法。 我在想像数组或动作列表之类的方法可能会解决问题,但是鉴于我要实现的目标,我不确定这是否是最好的方法-如果事情发生了,它将为用户带来更好的体验确定顺序,但我想通过代码使其明确,而不是添加注释。

这是我到目前为止的内容:

Action<dynamic>[] deleteOperations = new Action<dynamic>[2];
deleteOperations[0] = (resource => this.RemoveImageFromDatabase(resource));
deleteOperations[1] = (filename => _blobStorage.DeleteBlob(filename));

这可能是一个困难的问题,尤其是在没有更多信息的情况下。 为什么不提供一种按所需顺序执行所需操作的方法?

void Delete(Resource resource, String filename) {
    try {
        this.RemoveImageFromDatabase(resource);
        }
    catch {
        }
    try {
        _blobStorage.DeleteBlob(filename);
        }
    catch {
        }
    }

这样可以确保按要求排列顺序,并可以更好地控制操作(例如,允许您记录异常)。

您是否研究过时间耦合? 基本上,您使第二个函数依赖于第一个。

我不知道这对您的情况是否有帮助,但是您最终会得到如下结果:

var first = FirstMethod(p1, p2);
var second = SecondMethod(first, p3);

由于第二个呼叫依赖于第一个,因此您不能无序呼叫它们。

此线程中有一些链接和想法:

如何处理时间耦合?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM