在调用另一个方法时调用一个方法
Calling a method when another method is called
这可能是一个愚蠢的问题,但这里是。
我遇到以下问题:
public class MyBaseClass
{
public void SomethingAwesome()
{
//Awesome stuff happens here, but only when the Something() method
//is called in the other classes.
}
}
public class SomeClass : MyBaseClass
{
public void Something()
{
//Something happens here
}
}
public class SomeOtherClass : MyBaseClass
{
public void Something()
{
//Something else happens here
}
}
MyBaseClass 有一个方法需要在 Something() 方法被调用时被调用 class继承自它。
这背后的想法是,出于许多无聊的公司原因,我需要在调用此方法时进行记录。我宁愿有一个基础 class 可以在调用方法时自动审核,而不是让开发人员调用方法 himself/herself.
这样的东西能实现吗?如果可以,怎么做?
我考虑过部分方法,但这需要 class 个具有相同名称的方法,这在这种情况下是不可能的。
听起来你想要 template method pattern:
public abstract class MyBaseClass
{
public void Something()
{
// Code from SomethingAwesome here, or keep SomethingAwesome
// separate and call it from here
SomethingImpl();
}
protected abstract void SomethingImpl();
}
public class SomeClass : MyBaseClass
{
protected override SomethingImpl()
{
// Something happens here
}
}
那是假设你很高兴 MyBaseClass
到 有 一个 public Something
方法,当然 - 如果没有声明 Something
(以某种方式),那么派生的 类 中的两个 Something
方法是不相关的。
public class MyBaseClass
{
public void SomethingAwesome()
{
// ...
}
public void Something()
{
SomethingImpl();
SomethingAwesome();
}
protected abstract void SomethingImpl();
}
这可能是一个愚蠢的问题,但这里是。
我遇到以下问题:
public class MyBaseClass
{
public void SomethingAwesome()
{
//Awesome stuff happens here, but only when the Something() method
//is called in the other classes.
}
}
public class SomeClass : MyBaseClass
{
public void Something()
{
//Something happens here
}
}
public class SomeOtherClass : MyBaseClass
{
public void Something()
{
//Something else happens here
}
}
MyBaseClass 有一个方法需要在 Something() 方法被调用时被调用 class继承自它。
这背后的想法是,出于许多无聊的公司原因,我需要在调用此方法时进行记录。我宁愿有一个基础 class 可以在调用方法时自动审核,而不是让开发人员调用方法 himself/herself.
这样的东西能实现吗?如果可以,怎么做?
我考虑过部分方法,但这需要 class 个具有相同名称的方法,这在这种情况下是不可能的。
听起来你想要 template method pattern:
public abstract class MyBaseClass
{
public void Something()
{
// Code from SomethingAwesome here, or keep SomethingAwesome
// separate and call it from here
SomethingImpl();
}
protected abstract void SomethingImpl();
}
public class SomeClass : MyBaseClass
{
protected override SomethingImpl()
{
// Something happens here
}
}
那是假设你很高兴 MyBaseClass
到 有 一个 public Something
方法,当然 - 如果没有声明 Something
(以某种方式),那么派生的 类 中的两个 Something
方法是不相关的。
public class MyBaseClass
{
public void SomethingAwesome()
{
// ...
}
public void Something()
{
SomethingImpl();
SomethingAwesome();
}
protected abstract void SomethingImpl();
}