如:var obj=new Person();想在new的时候找两个占位点……new之前和new之后的

解决方案 »

  1.   


    不是这个意思,是要对new后的实例进行操作,new前进行一些准备
      

  2.   

    就算是可以这样,你的同事们真的会成为很悲剧的一帮人,因为程序几乎无法调试了,vs调试器上所有的关于调试位置信息的报告全都文不对题了。那些自认为会开发AOP的人,在vs上会造成很悲催的结果。
      

  3.   

    如果你想正常去地编写什么事件流程,那么请在你的代码中正常地去声明 event,然后正常地开发和调试。AOP开发不过是一种美好的幻想,就好像幻想着所有的鸡都会下鸭蛋和鹅蛋一样。
      

  4.   

    如果可以修改 Person 的源码,就不存在这个问题了吧,
    所以这样的要求可以通过类继承解决,首先定义一个新的类,如下:
    class NewPerson : Person
    {
        private int val = Init();
        private static int Init(){
            /// new 之前的处理
            return 0;
        }
        int xx;
        public NewPerson(){
            /// new 之后的处理
        }
    }
    然后把原来的代码修改如下:
    var obj = new NewPerson();
      

  5.   


    stackoverflow
    how to 
      

  6.   

    vs单元测试用的Fakes程序集明显是做到了,但不知道怎么做到的
      

  7.   

    可以用MONO.CECIL做静态IL注入.比较麻烦.
    反射不知道能不能满足你的需要.
     public class Class1
        {
            public static void Main()
            {
                //获得构造函数
                var ctor = typeof(Test).GetConstructors()[0];
                //调用构造函数
                var test = ctor.Invoke(null);
            }
        }    public class Test
        {
            public Test()
            {
                Console.WriteLine("Test");
                Console.ReadKey();
            }
        }
      

  8.   

    AOP 和这个有关系吗?
    我看了 AOP,没有看懂,好像几乎都是因为 Java 之流的单继承的缘故。
    但是我觉得 既然使用 Java 就要避免多继承。还有我一直假定 C# 的 new 是一个整体操作。
    和C++不一致。就像她没有赋值重载一样。
      

  9.   

    想要干什么?----new 前
    var obj=new Person();
    ----new 后
    ----------------
    public class  NewPerson:Person
    {
      NewPerson()
      {
         --new qian
         base();
         -- new hou
      }
    }