相关疑难解决方法(0)

调用基函数然后继承函数

我有一个基类和一个继承基类.基类有几个虚函数,继承的类可以覆盖它们.但是,基类中的虚函数必须在调用继承的类重写之前运行.有没有什么方法可以先调用基类虚函数然后继承类重写.不调用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# inheritance

49
推荐指数
2
解决办法
8万
查看次数

在类的所有方法之前运行方法

是否有可能在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)

c# reflection

23
推荐指数
2
解决办法
1万
查看次数

在执行被调用函数之前执行代码

我希望能够以某种方式标记一个函数(属性可能?),这样当从任何地方调用它时,其他一些代码会处理参数并返回一个值而不是被调用的函数,或者可以让函数正常执行.

我会用它来轻松缓存.

例如,如果我有一个名为Add10的函数,它将如下所示:

int Add10 (int n)
{
    return n + 10;
}
Run Code Online (Sandbox Code Playgroud)

如果函数以相同的值重复调用(Add10(7)),它将始终给出相同的结果(17),因此每次重新计算都没有意义.当然,我不会用这么简单的功能来做,但我相信你能理解我的意思.

C#是否提供了我想要的任何方式?我需要一种方法将函数标记为缓存,以便当有人执行Add10(16)某些代码首先运行以检查字典时,我们已经知道Add10值为16并返回它,如果我们这样做,计算,存储和如果我们不回来.

c#

5
推荐指数
1
解决办法
2156
查看次数

代码块之前和之后的执行方法

如何在括号中包含一些代码来执行以下操作?

MyCustomStatement(args){
// code goes here
}
Run Code Online (Sandbox Code Playgroud)

因此,在括号中的代码执行之前,它将调用一个方法,当括号中的代码完成执行时,它将调用另一个方法.有这样的事吗?我知道当我可以简单地在代码之前和之后调用方法时,这样做似乎是多余的,但我只是很好奇.我不知道怎么说这个,因为我是编程的新手.

谢谢!

.net c#

4
推荐指数
1
解决办法
2438
查看次数

标签 统计

c# ×4

.net ×1

inheritance ×1

reflection ×1