怎么拦载类的默认构造参数?

aminic 2013-09-14 09:44:17
如:

var obj=new Person();

想在new的时候找两个占位点……new之前和new之后的


...全文
311 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghao0 2013-09-18
  • 打赏
  • 举报
回复
想要干什么? ----new 前 var obj=new Person(); ----new 后 ---------------- public class NewPerson:Person { NewPerson() { --new qian base(); -- new hou } }
phommy 2013-09-16
  • 打赏
  • 举报
回复
vs单元测试用的Fakes程序集明显是做到了,但不知道怎么做到的
aminic 2013-09-16
  • 打赏
  • 举报
回复
引用 11 楼 emailtome 的回复:

stackoverflow
how to


谢谢,很好的库
aminic 2013-09-16
  • 打赏
  • 举报
回复
引用 12 楼 NianHui 的回复:
构造函数写成私有的,用静态方法返回该对象。


也是个招,我觉得就是外部包装一下,
不过我是想,在不改动代码的情况下,搞定一切……
Saleayas 2013-09-16
  • 打赏
  • 举报
回复
AOP 和这个有关系吗? 我看了 AOP,没有看懂,好像几乎都是因为 Java 之流的单继承的缘故。 但是我觉得 既然使用 Java 就要避免多继承。 还有我一直假定 C# 的 new 是一个整体操作。 和C++不一致。就像她没有赋值重载一样。
rayel2 2013-09-16
  • 打赏
  • 举报
回复
可以用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();
        }
    }
aminic 2013-09-15
  • 打赏
  • 举报
回复
引用 7 楼 sp1234 的回复:
如果你想正常去地编写什么事件流程,那么请在你的代码中正常地去声明 event,然后正常地开发和调试。

AOP开发不过是一种美好的幻想,就好像幻想着所有的鸡都会下鸭蛋和鹅蛋一样。


看来是切身体会……
aminic 2013-09-15
  • 打赏
  • 举报
回复
引用 8 楼 tcmakebest 的回复:
如果可以修改 Person 的源码,就不存在这个问题了吧,
所以这样的要求可以通过类继承解决,首先定义一个新的类,如下:
class NewPerson : Person
{
private int val = Init();
private static int Init(){
/// new 之前的处理
return 0;
}
int xx;
public NewPerson(){
/// new 之后的处理
}
}
然后把原来的代码修改如下:
var obj = new NewPerson();


我觉得这种方法不够好……
tcmakebest 2013-09-15
  • 打赏
  • 举报
回复
如果可以修改 Person 的源码,就不存在这个问题了吧, 所以这样的要求可以通过类继承解决,首先定义一个新的类,如下: class NewPerson : Person { private int val = Init(); private static int Init(){ /// new 之前的处理 return 0; } int xx; public NewPerson(){ /// new 之后的处理 } } 然后把原来的代码修改如下: var obj = new NewPerson();
  • 打赏
  • 举报
回复
如果你想正常去地编写什么事件流程,那么请在你的代码中正常地去声明 event,然后正常地开发和调试。 AOP开发不过是一种美好的幻想,就好像幻想着所有的鸡都会下鸭蛋和鹅蛋一样。
  • 打赏
  • 举报
回复
就算是可以这样,你的同事们真的会成为很悲剧的一帮人,因为程序几乎无法调试了,vs调试器上所有的关于调试位置信息的报告全都文不对题了。 那些自认为会开发AOP的人,在vs上会造成很悲催的结果。
智商余额不足 2013-09-15
  • 打赏
  • 举报
回复
路过此地...半夜回帖不容易
#blackheart 2013-09-15
  • 打赏
  • 举报
回复
构造函数写成私有的,用静态方法返回该对象。
emailtome 2013-09-15
  • 打赏
  • 举报
回复
devmiao 2013-09-14
  • 打赏
  • 举报
回复
语法角度无解。
aminic 2013-09-14
  • 打赏
  • 举报
回复
引用 1 楼 devmiao 的回复:
它的基类的构造函数在它的构造函数之前执行。它的派生类的构造函数在它之后执行。


不是这个意思,是要对new后的实例进行操作,new前进行一些准备
  • 打赏
  • 举报
回复
为何会有这样的想法,要做什么?
devmiao 2013-09-14
  • 打赏
  • 举报
回复
它的基类的构造函数在它的构造函数之前执行。它的派生类的构造函数在它之后执行。
该课程由付强老师主讲,系统的、全面的、具体的讲解了java入门的知识。可以使初级的学员入门。Java入门Java的历史、Java的版本、Java的优势、软件行业前景Java开发环境搭建、编写Java入门练习虚拟机的运行机制、Java的平台无关性、虚拟机垃圾回收机制基础语法关键字、标识符、Java数据型分、基础数据型、取值范围变量、常量、三种注释、生成doc文档、运算符、表达式if语句、switch语句、嵌套判断for语句、while语句、do-while语句、嵌套循环和对象面向过程和面向对象的区别的构成、访问修饰符、对象的内存分配this关键字、按值传递与按引用传递、对象的初始化顺序高级特性的继承、父子的初始化顺序、单继承性方法的覆盖、重载、super关键字、多态、instanceof关键字、强制型转换、static关键字、final关键字数组和枚举一维数组的应用及内存分配多维数组的应用及内存分配数组的复制、数组的按引用传递排序算法:冒泡、直接选择、插入选择、希尔、快速、归并、堆排序Arrays工具的应用枚举型的应用常见的使用Object的底层及应用、ObjectsString的底层及应用、正则表达式StringBuffer和StringBuilder的底层及应用Math的应用、包装的应用日期的应用:Date、DateFormat、Calendar、LocalDateTime、Instant、LocalDate、MonthDay、ZonedDateTime、YearMonth、新旧日期转换BigInteger和BingDecimal、DecimalFormatSystem、Scanner抽象和接口抽象的规则及应用接口的规则及应用默认方法、静态方法、函数式接口、Lambda表达式异常异常的定义异常的处理:抓(try-catch-finally)、抛(throws)异常的分、自定义异常的应用、throw关键字集合框架集合框架结构:接口、实现Collection接口的方法、Set接口的方法、List接口的方法、Map接口的方法Array、Linked、Hash、Tree底层实现原理泛型的作用、Collections工具、历史集合I/O流Path的原理及应用、Files的原理及应用文件字节流FileInputStream的原理及应用对象、缓冲流、数据流的原理及应用字符流的原理及应用多线程进程与线程的概念、查看线程对象Java内存模型线程的创建与启动:扩展Thread、实现Runnable接口、实现Callable接口、线程池线程状态的转换:新建、就绪、运行、阻塞、死亡线程的调度:sleep、yield、join、interrupt、wait后台线程、定时任务线程的并发与同步、同步锁、同步块、线程安全的Lock接口、CAS、volatile修饰符内部成员内部、本地内部的应用匿名内部的原理及引用、Lambda表达式设计模式基础设计模式概念、框架概念7大设计原则:开闭原则、依赖倒置原则、单一职责原则、接口隔离原则、迪米特原则、里氏替换原则、合成复用原则单例模式、工厂模式、模板模式、代理模式、装饰模式、适配器模式、外观模式、策略模式、观察者模式、命令模式、备忘录模式、观察者模式反射反射包Class的使用反射获取属性、方法、构造器通过反射创建对象/通过反射调用方法反射的应用

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧