通过Silverlight Extension Methods特性我们可以扩展基础类,为基础类增加一些方法,并且增加的方法可以同基础类原本的方法同样方式调用,相当的方便。下面就直接来看一个例子吧。在使用日期时间时常常会需要获取从1970-1-1日以来的总毫秒数,可是C#中的DateTime并未提供这个函数,下面就以此为例介绍一下Extension Methods特性。代码如下。
namespace Huizhang212
{
/// <summary>
/// 利用Extension Methods特性实现对DateTime基础类扩展
/// </summary>
public static class HuiExtensions
{
/// <summary>
/// DateTime的扩展函数
/// 获取从1970-1-1日以来的总毫秒数
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static long GetTime(this DateTime dt)
{
DateTime d1970 = new DateTime(1970, 1, 1);
return (dt.Ticks - d1970.Ticks) / 10000;
}
}
/// <summary>
/// 测试用例
/// </summary>
public class TestCase
{
public static void Test()
{
//获取毫秒数
DateTime now = DateTime.Now;
long time = now.GetTime();
}
}
}
通过上面的例子应该很容易明白Extension Method特性的用法。简单的说Extension Method是一个定义在Static Class的一个特殊的Static Method。之所以说它是一个特殊的静态方法,是因为它不但可以像普通静态方法一样调用,也可以通过实例化后的对象调用。