【WP7进阶】——扩展框架组件

    技术2022-05-20  67

     组件描述

        该组件为Windows Phone 7 本身C#框架扩展了一系列方法,可以使你在编写代码的时候减少重复复制,并且增加了许多通用功能,使你的编写代码的时候可以更加流畅和得以应手。

     

    扩展类别

    该组件是将我们日常常用到的数据类型或者集合等操作再一次封装成易于使用的静态方法,分类为如下几大类:

    String 字符串扩展DateTime 日期扩展Guid 全局唯一标识符扩展IEnumerable 集合扩展Object 对象扩展Stream 流扩展Uri  统一资源标识符扩展Bool  真假“是否”扩展Int  整型扩展

    扩展方法体

    以下为每个静态类的扩展方法列表

    StringExtensions

    静态方法成员截图:

    Format 代码:

     

    public   static   string  Format( this   string  self,  params   object [] args){     if  (self  ==   null )    {         throw   new  ArgumentNullException( " format " );    }     return   string .Format(self, args);}  

     

    HasValue 代码:

     

    public   static   bool  HasValue( this   string  self){     return   ! string .IsNullOrEmpty(self);}

     

     

    IsNullOrEmpty代码:

    public   static   bool  IsNullOrEmpty( this   string  self){     return   string .IsNullOrEmpty(self);}

     

    IsValidEmailAddress代码:

    public   static   bool  IsValidEmailAddress( this   string  self){    Regex regex  =   new  Regex( @" ^[/w-/.]+@([/w-]+/.)+[/w-]{2,4}$ " );     return  regex.IsMatch(self);}

     

    Split 代码:

     

    public   static  IEnumerable < string >  Split( this   string  self,  char  separator){     return  self.Split( new   char [] { separator });

     

    }

     

     

     

    public   static  IEnumerable < string >  Split( this   string  self,  string  separator){     return  self.Split( new   string [] { separator }, StringSplitOptions.None);}

     

     

    ToInt 代码:

     

    public   static   int  ToInt( this   string  self){     int  num;     if  ( ! int .TryParse(self,  out  num))    {         throw   new  InvalidOperationException( " Value is not valid. " );    }     return  num;} 

     

     

    Trim 代码:

    public   static   string  Trim( this   string  self,  char  character){     return  self.Trim( new   char [] { character });}

     

     

    DateTimeExtensions

    静态方法成员截图:

    AddWeek 代码:

    public   static  DateTime AddWeek( this  DateTime dateTime){     return  dateTime.AddDays( 7.0 );}

     

    ToUnixTimestamp代码:

    public   static   long  ToUnixTimestamp( this  DateTime date){    DateTime time  =   new  DateTime( 0x7b2 1 1 0 0 0 );    TimeSpan span  =  (TimeSpan) (date  -  time);     return  ( long ) span.TotalSeconds;}

     

    Tip:上面的time 是1/1/1970 12:00:00 AM

    GuidExtensions

    静态方法成员截图:

    IsGuidEmpty 代码 :

    public   static   bool  IsGuidEmpty( this  Guid self){     return  (self  ==  Guid.Empty);}

     

    RemoveHyphen 代码:

     

    public   static   string  RemoveHyphen( this  Guid self){     return  self.ToString().Replace( " - " "" );}

     

     

    IEnumerableExtensions

    静态方法成员截图:

    ExistsIn<T> 代码:

    public   static   bool  ExistsIn < T > ( this  T obj, IEnumerable < T >  collection){     return  Enumerable.Contains < T > (collection, obj);}

     

     

    ForEach<T> 代码:

    public   static   void  ForEach < T > ( this  IEnumerable < T >  sequence, Action < T >  action){     if  (sequence  ==   null )    {         throw   new  ArgumentNullException( " The secuence is null! " );    }     if  (action  ==   null )    {         throw   new  ArgumentNullException( " The action is null! " );    }     foreach  (T local  in  sequence)    {        action(local);    }}

     

     

    IsNullOrEmpty 代码:

    public   static   bool  IsNullOrEmpty < T > ( this  IEnumerable < T >  obj){     if  ( ! obj.IsNull())    {         return  (Enumerable.Count < T > (obj)  ==   0 );    }     return   true ;}

    ToObservableCollection<T> 代码:

    public   static  ObservableCollection < T >  ToObservableCollection < T > ( this  IEnumerable < T >  source){    ObservableCollection < T >  observables  =   new  ObservableCollection < T > ();    source.ForEach < T > ( new  Action < T > (observables.Add));     return  observables;}

     

    ObjectExtensions

    静态方法成员截图:

    In 代码:

     

    public   static   bool  In( this   object  self, IEnumerable enumerable){     return  (enumerable.IsNotNull()  &&  Enumerable.Contains < object > (Enumerable.Cast < object > (enumerable), self));}

     

     

    IsNotNull 代码:

     

    public   static   bool  IsNotNull( this   object  self){     return  (self  !=   null );}

     

     

    IsNull 代码:

     

    public   static   bool  IsNull( this   object  self){     return  (self  ==   null );}

     

    NullTolerantEquals 代码:

     

    public   static   bool  NullTolerantEquals( this   object  self,  object  obj){     if  (self.IsNull()  &&  obj.IsNotNull())    {         return   false ;    }     if  (self.IsNotNull()  &&  obj.IsNull())    {         return   false ;    }     return  ((self.IsNull()  &&  obj.IsNull())  ||  self.Equals(obj));}

     

     

    StreamExtensions

    静态方法成员列表截图:

    EqualsStream 代码:

     

    public   static   bool  EqualsStream( this  Stream originalStream, Stream streamToCompareWith){     return  originalStream.EqualsStream(streamToCompareWith, Math.Max(originalStream.Length, streamToCompareWith.Length));} 

     

     

    public   static   bool  EqualsStream( this  Stream originalStream, Stream streamToCompareWith,  long  readLength){    originalStream.Position  =   0L ;    streamToCompareWith.Position  =   0L ;     for  ( int  i  =   0 ; i  <  readLength; i ++ )    {         if  (originalStream.ReadByte()  !=  streamToCompareWith.ReadByte())        {             return   false ;        }    }     return   true ;}

     

     

    ReadAllText 代码:

     

    public   static   string  ReadAllText( this  Stream stream){     using  (StreamReader reader  =   new  StreamReader(stream))    {         return  reader.ReadToEnd();    }}

     

     

    ToByteArray 代码:

     

    public   static   byte [] ToByteArray( this  Stream stream){    MemoryStream writeStream  =   new  MemoryStream();    StreamHelper.CopyStream(stream, writeStream,  true );     return  writeStream.ToArray();}

     

     

    UriExtensions

    静态方法成员列表截图:

    Parameters 代码:

     

    public   static  Dictionary < string string >  Parameters( this  Uri self){     if  (self.IsNull())    {         throw   new  ArgumentException( " Uri can't be null. " );    }     if  ( string .IsNullOrEmpty(self.Query))    {         return   new  Dictionary < string string > ();    }     if  (CS$ <> 9__CachedAnonymousMethodDelegate2  ==   null )    {        CS$ <> 9__CachedAnonymousMethodDelegate2  =   new  Func < string string > ( null , (IntPtr)  < Parameters > b__0);    }     if  (CS$ <> 9__CachedAnonymousMethodDelegate3  ==   null )    {        CS$ <> 9__CachedAnonymousMethodDelegate3  =   new  Func < string string > ( null , (IntPtr)  < Parameters > b__1);    }     return  Enumerable.ToDictionary < string string string > (self.Query.Substring( 1 ).Split( new   char [] {  ' & '  }), CS$ <> 9__CachedAnonymousMethodDelegate2, CS$ <> 9__CachedAnonymousMethodDelegate3);}

     

     

    BoolExtensions

    静态方法成员列表截图:

    IsFalse 代码:

     

    public   static   bool  IsFalse( this   bool  self){     return   ! self;}

     

     

    IsTrue 代码:

     

    public   static   bool  IsTrue( this   bool  self){     return  self;} 

     

    IntExtensions

    静态方法成员列表截图:

     

     

    IsWithin 代码:

     

    public   static   bool  IsWithin( this   int  self,  int  minimum,  int  maximum){     if  (minimum  >  maximum)    {         throw   new  ArgumentException( " minimum must be of less value than maximum. " );    }     return  ((self  >=  minimum)  &&  (self  <=  maximum));}

     

     

     

    组件下载:Extension


    最新回复(0)