怎么拦载类的默认构造参数?
如:var obj=new Person();
想在new的时候找两个占位点……new之前和new之后的
--------------------编程问答-------------------- 它的基类的构造函数在它的构造函数之前执行。它的派生类的构造函数在它之后执行。 --------------------编程问答-------------------- 为何会有这样的想法,要做什么? --------------------编程问答--------------------
不是这个意思,是要对new后的实例进行操作,new前进行一些准备 --------------------编程问答-------------------- 语法角度无解。 --------------------编程问答-------------------- 路过此地...半夜回帖不容易 --------------------编程问答-------------------- 就算是可以这样,你的同事们真的会成为很悲剧的一帮人,因为程序几乎无法调试了,vs调试器上所有的关于调试位置信息的报告全都文不对题了。
那些自认为会开发AOP的人,在vs上会造成很悲催的结果。 --------------------编程问答-------------------- 如果你想正常去地编写什么事件流程,那么请在你的代码中正常地去声明 event,然后正常地开发和调试。
AOP开发不过是一种美好的幻想,就好像幻想着所有的鸡都会下鸭蛋和鹅蛋一样。 --------------------编程问答-------------------- 如果可以修改 Person 的源码,就不存在这个问题了吧,
所以这样的要求可以通过类继承解决,首先定义一个新的类,如下:
class NewPerson : Person
{
private int val = Init();
private static int Init(){
/// new 之前的处理
return 0;
}
int xx;
public NewPerson(){
/// new 之后的处理
}
}
然后把原来的代码修改如下:
var obj = new NewPerson(); --------------------编程问答--------------------
我觉得这种方法不够好…… --------------------编程问答--------------------
看来是切身体会…… --------------------编程问答--------------------
stackoverflow
how to
--------------------编程问答-------------------- 构造函数写成私有的,用静态方法返回该对象。 --------------------编程问答--------------------
也是个招,我觉得就是外部包装一下,
不过我是想,在不改动代码的情况下,搞定一切…… --------------------编程问答--------------------
谢谢,很好的库 --------------------编程问答-------------------- vs单元测试用的Fakes程序集明显是做到了,但不知道怎么做到的 --------------------编程问答-------------------- 可以用MONO.CECIL做静态IL注入.比较麻烦.
反射不知道能不能满足你的需要.
public class Class1--------------------编程问答-------------------- AOP 和这个有关系吗?
{
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();
}
}
我看了 AOP,没有看懂,好像几乎都是因为 Java 之流的单继承的缘故。
但是我觉得 既然使用 Java 就要避免多继承。
还有我一直假定 C# 的 new 是一个整体操作。
和C++不一致。就像她没有赋值重载一样。 --------------------编程问答-------------------- 想要干什么?
----new 前
var obj=new Person();
----new 后
----------------
public class NewPerson:Person
{
NewPerson()
{
--new qian
base();
-- new hou
}
}
补充:.NET技术 , C#