首页 > 解决方案 > 如何区分相同的方法调用

问题描述

我将从一个代码示例开始。我有以下课程

public class Foo
{
    public object DoSomething() {}
}

我也有一些利用DoSomehting类方法的代码Foo

public class Boo
{
    privite Foo foo;

    public void SomeMethod()
    {
        ...
        foo.DoSomething();
        ...
        foo.DoSomething();
    }
}

我如何区分课堂foo.DoSomething()内的这两个电话Foo

我想出的是在每次调用的参数中传递一个标识对象DoSomething。然后在Foo课堂上,我会存储 id 并在拨打新电话时比较它们。

public class Boo
{
    privite Foo foo;

    public void SomeMethod()
    {
        ...
        var idObjA = new IDObj(Guid.NewGuid());
        foo.DoSomething(idObjA);
        ...
        var idObjB = new IDObj(Guid.NewGuid());
        foo.DoSomething(idObjB);
    }
}

也许有更好的方法,或者我不知道的模式。我希望使用代码最不模糊,因此对该DoSomething方法的调用尽可能简单。

澄清我的意图。我正在实现一个消息服务,让用户能够检查对话框上的复选框(例如,不再显示,或全部应用)。利用该服务的代码可以多次调用相同的方法,例如显示错误消息,但在不同的上下文中。换句话说,当用户决定不再为特定操作显示该消息时,不应出现消息框。因此我需要知道何时在同一上下文(动作)中多次调用方法

标签: c#

解决方案


也许您应该稍微扩展一下您想要实现的目标。如果您使用如上所述的实例化类并且只是试图区分第一次和第二次调用,您可以在您的Foo类中添加相应的切换字段:

public class Foo
{
    private bool _firstCall = true;

    public object DoSomething() {
        if(_firstCall) {
            _firstCall = false;
            // first call logic
        } else {
            // second call logic
        }
    }
}

推荐阅读