C#在命中属性之前运行一段代码

我有一个方法,我想始终在属性的get访问器之前运行.如果不在get {}中手动运行方法,这是否可行?这是我想要工作的一个例子.

private string _someString;
    private string _someOtherString;

    public string SomeString
    {
        get { return _someString; }
    }

    public string SomeOtherString
    {
        get { return _someOtherString; }
    }

    public void AlwaysRun()
    {
        // Code to always run here.
    }
这在.NET框架中本身是不可能的.

但它可以使用称为AOP,面向方面编程的技术来完成.这里有一个很好的解释:http://www.sharpcrafters.com/aop.net.AOP就是在方法调用之前或之后注入代码;这是你想要做的.有两种方法可以执行此操作:在运行时或编译时.运行时方式通过覆盖虚方法动态生成实现,因此它需要您的方法是虚拟的.如果编译时间,则修改实际代码(或IL).

一个很好的编译时AOP框架是PostSharp.对于做运行时AOP,框架的一个例子可能是Castle DynamicProxy.

相关文章
相关标签/搜索