c# - 在一个类的所有方法之前运行一个方法

标签 c# reflection

是否可以在 C# 3 或 4 中执行此操作?也许有一些反射(reflection)?

class Magic
{

    [RunBeforeAll]
    public void BaseMethod()
    {
    }

    //runs BaseMethod before being executed
    public void Method1()
    {
    }

    //runs BaseMethod before being executed
    public void Method2()
    {
    }
}

编辑

对此有一个替代解决方案,使 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 Method2()
    {
    }
}

最佳答案

您不能在 C# 中自动执行此操作 - 您可能应该查看 AOP,例如与 PostSharp .

关于c# - 在一个类的所有方法之前运行一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9192709/

相关文章:

c# - Roslyn Visual Basic.Script 引擎无法识别用 C# 编写的 hostObject

c# - 源代码混淆

c# - 解析日期字符串以获取年份

c# - Silverlight 页面检查用户是否登录

c++ - 你将如何在 C++ 中实现基本的反射?

c# - 如何判断一个类是否构造完成(实例构造完成)?

reflection - 如何将 reflect.Value 转换为它的类型?

c#, wpf, 动态命名控件

java - 如何在反射中处理原始类型

kotlin - 使用反射在Kotlin中按字符串设置属性?