c# - 如何区分相同的方法调用
问题描述
我将从一个代码示例开始。我有以下课程
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
方法的调用尽可能简单。
澄清我的意图。我正在实现一个消息服务,让用户能够检查对话框上的复选框(例如,不再显示,或全部应用)。利用该服务的代码可以多次调用相同的方法,例如显示错误消息,但在不同的上下文中。换句话说,当用户决定不再为特定操作显示该消息时,不应出现消息框。因此我需要知道何时在同一上下文(动作)中多次调用方法
解决方案
也许您应该稍微扩展一下您想要实现的目标。如果您使用如上所述的实例化类并且只是试图区分第一次和第二次调用,您可以在您的Foo
类中添加相应的切换字段:
public class Foo
{
private bool _firstCall = true;
public object DoSomething() {
if(_firstCall) {
_firstCall = false;
// first call logic
} else {
// second call logic
}
}
}
推荐阅读
- java - 动作类对象
- ruby-on-rails - 如何在 Rails 中使用装饰器
- matlab - 如何仅将数字读取为矩阵而忽略原始文件中的括号?
- c# - UWP 触发后台任务
- oracle - 来自 DB2 的 Oracle 时间戳问题
- facebook - 要使用“页面公共内容访问”,您对该端点的使用必须经过 Facebook 的审核和批准
- java - 滑翔无法正确加载图像
- bitbucket - 我可以以某种方式启用 BitBucket 拉取请求描述的自动更新,以便像在 Github 上那样发布拉取请求提交吗?
- jquery - 无法在我的 wp 主题中包含自定义 jQuery 脚本
- css - 我们如何在使用 ng2-opd-popup 时重新定位弹出窗口并模糊主屏幕?