我有一个基类和一个继承基类.基类有几个虚函数,继承的类可以覆盖它们.但是,基类中的虚函数必须在调用继承的类重写之前运行.有没有什么方法可以先调用基类虚函数然后继承类重写.不调用base.function().
我知道我可以简单地创建两个函数,一个被调用,另一个虚拟.但有没有办法可以保持同样的名字?我知道我可能需要改变一些事情.
class myBase
{
public virtual myFunction()
{ /* must-run code, Called first */ }
}
class myInherited : myBase
{
public override myFunction()
{ /* don't use base.myFunction();,
called from base.myFunction(); */ }
}
Run Code Online (Sandbox Code Playgroud)
类似的问题在这里.
是否有可能在C#3或4中做到这一点?也许有一些反思?
class Magic
{
[RunBeforeAll]
public void BaseMethod()
{
}
//runs BaseMethod before being executed
public void Method1()
{
}
//runs BaseMethod before being executed
public void Method2()
{
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
有一个替代解决方案,做Magic一个单例并将您的代码放在静态实例的getter上.这就是我做的:
public class Magic
{
private static Magic magic = new Magic();
public static Magic Instance
{
get
{
magic.BaseMethod();
return magic;
}
}
public void BaseMethod()
{
}
//runs BaseMethod before being executed
public void Method1()
{
}
//runs BaseMethod before being executed
public void …Run Code Online (Sandbox Code Playgroud) 我希望能够以某种方式标记一个函数(属性可能?),这样当从任何地方调用它时,其他一些代码会处理参数并返回一个值而不是被调用的函数,或者可以让函数正常执行.
我会用它来轻松缓存.
例如,如果我有一个名为Add10的函数,它将如下所示:
int Add10 (int n)
{
return n + 10;
}
Run Code Online (Sandbox Code Playgroud)
如果函数以相同的值重复调用(Add10(7)),它将始终给出相同的结果(17),因此每次重新计算都没有意义.当然,我不会用这么简单的功能来做,但我相信你能理解我的意思.
C#是否提供了我想要的任何方式?我需要一种方法将函数标记为缓存,以便当有人执行Add10(16)某些代码首先运行以检查字典时,我们已经知道Add10值为16并返回它,如果我们这样做,计算,存储和如果我们不回来.
如何在括号中包含一些代码来执行以下操作?
MyCustomStatement(args){
// code goes here
}
Run Code Online (Sandbox Code Playgroud)
因此,在括号中的代码执行之前,它将调用一个方法,当括号中的代码完成执行时,它将调用另一个方法.有这样的事吗?我知道当我可以简单地在代码之前和之后调用方法时,这样做似乎是多余的,但我只是很好奇.我不知道怎么说这个,因为我是编程的新手.
谢谢!