当前位置:编程学习 > C#/ASP.NET >>

一个关于动态织入的简单问题

public class Log{
public void Write(){
//....
}
}

public class User{
public void GetUser(){
//do...
}
}

以上是我的两个类,我想在User.GetUser中进行拦截(日志的记录Log.Write),我不想直接名写在里面,想通过emit动态织入,现在整个User类已经可以生成动态代理类,现在问题是我怎么把Log.Write这个类的这个方法加载进去,最终的效果如下面的那个类一样,请高手指点一下:不胜感激~~

public class User{
public void GetUser(){
Log log=new Log();
log.Write();
//do...
}
}


--------------------编程问答--------------------
PatrickPan
LZ看看设计模式吧。
动态地给一个对象添加一些额外的职责。就扩展功能而言,它比生成子类方式更为灵活。
典型的装饰模式。 
--------------------编程问答--------------------
PatrickPan

public class Log
    {
        public static void Write()
        {
            Console.WriteLine("Write Log ing.........");
        }
    }

    public class User
    {
        public virtual void GetUser()
        {
            Console.WriteLine("The User is Test.");
        }
    }

    public class DecoratorUser : User
    {
        private User user;
        public DecoratorUser(User user)
        {
            this.user = user;
        }

        public override void GetUser()
        {
            base.GetUser();
            Log.Write();
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            User user = new User();
            user.GetUser();

            Console.WriteLine("===================================");
            DecoratorUser dUser = new DecoratorUser(user);
            dUser.GetUser();

            Console.ReadLine();
        }
    }
--------------------编程问答-------------------- 你的动态代理类都生成,那就把Log.Write();这句代码也emit到动态代理类里啊

或者你的动态代理类应该有暴露出委托或接口以供注入 --------------------编程问答-------------------- 好像没那么简单,呵呵. --------------------编程问答-------------------- 好像没那么简单,呵呵.
补充:.NET技术 ,  .NET Framework
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,