首页 > Windows开发 > 详细

C#特性-扩展方法

时间:2015-11-16 19:32:25      阅读:211      评论:0      收藏:0      [点我收藏+]
public static class PropertyExtension
{
        public static object GetValueByName(this object self, string propertyName)
        {
            if (self == null)
            {
                return self ;
            }
            Type t = self.GetType();
            PropertyInfo p = t.GetProperty(propertyName);
            return p.GetValue(self, null);
        }
}

 

扩展方法:

1 方法所在的类必须是静态的

2 方法也必须是静态的

3 方法的第一个参数必须是你要扩展的那个类型,比如你要给int扩展一个方法,那么第一个参数就必须是int。

4 在第一个参数前面还需要有一个this关键字。

 

string str = "abc";
object len = str.GetValueByName("Length");

注意:

很多人看到扩展方法也许眼里冒出金光,以后在设计的时候不管三七二十一,反正可以扩展。还有一些人会对类任意扩展,将以前一些作为”Helper”的方法统统使用扩展方法代替,注意的是扩展方法有“污染性”,所以我觉得在扩展的时候还是想想,是不是值得这样扩展。

在扩展的时候也不要对比较高层的类进行扩展,像我上面对object的扩展我觉得就是不可取的,object是所有类的基类,一经扩展,所有的类都被“污染”了。

C#特性-扩展方法

原文:http://www.cnblogs.com/xiaoxiaof/p/4969587.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!