日期:2014-05-18  浏览次数:20840 次

C#程序,能否在运行时,为一个类型增加方法?
python这样的动态语言,"类型"是可以动态创建的。
而C#似乎和c++/java一样是静态类型语句,类型本身的创建依赖于字节码里面已经编译好的内容。
对吗? C#程序,能否在运行时,为一个类型增加方法?


------解决方案--------------------
应该是不行。

扩展方法,扩展属性 应该都不是你想要的东西。
------解决方案--------------------
我认为no

------解决方案--------------------
不能改变原有的类的方法,但你可以用反射技术动态创建新的类型
------解决方案--------------------
没听说过
------解决方案--------------------
已经存在的类型,无法添加方法到它当中去,但是你可以在运行时动态创建静态方法,只要方法的参数里包含该类型,将该类型的实例传递进去操作,那么和给已知类型添加方法有啥区别?
------解决方案--------------------
还有一个技术,可以通过C#的扩展方法给已知类型添加扩展方法。但由于是扩展方法,你动态添加了也反射不到,只能直接调用,而编写代码的时候还不知道该类型是否有那么一个扩展方法,C# 4.0里面的dynamic关键字转换后不知道是否可以,你可以试试。