扩展属性应用

系统 1568 0

字段去除空格

代码

       [AttributeUsage(AttributeTargets.Property,Inherited=
      
        false
      
      ,AllowMultiple=
      
        false
      
      )]
      
public class TrimAttribute:Attribute
{ private readonly Type type;
public TrimAttribute(Type type)
{
this .type = type;
}
public Type Type
{
get { return this .type; }
}
}
public static class TrimAttributeExtension
{
public static void Trim( this Object obj)
{
Type t = obj.GetType();
foreach ( var prop in t.GetProperties())
{
foreach ( var attr in prop.GetCustomAttributes( typeof (TrimAttribute), true ))
{
TrimAttribute tsa = (TrimAttribute)attr;
if (prop.GetValue(obj, null )!= null &&(tsa.Type== typeof ( string )))
{
prop.SetValue(obj,GetPropertyValue(obj,prop.Name).ToString().Trim(), null );
}
}
}
}
private static object GetPropertyValue( object instance, string PropertName)
{
return instance.GetType().InvokeMember(PropertName,System.Reflection.BindingFlags.GetProperty, null ,instance, new Object[]{});
}
}

使用

      
        public
      
      
        class
      
       SomeClass
      
{ [Trim( typeof ( string ))]
string Name { get ; set ; }
}


查询语法

      
        public
      
      
        class
      
       SelectClass
      
{
public void Method1()
{
int [] fool= new int [ 100 ];
for ( int num = 0 ; num < fool.Length; num++)
{
fool[num] = num * num;
}
foreach ( int i in fool)
{
Console.WriteLine(i.ToString());
}
}
public void Method1Select()
{
int [] fool = ( from n in Enumerable.Range( 0 , 100 ) select n * n).ToArray();
fool.ForAll((n) => Console.WriteLine(n));
}
public IEnumerable<Tuple< int , int >> ProduceIndices()
{
for ( int x = 0 ; x < 100 ; x++)
for ( int y = 0 ; y < 100 ; y++)
if (x + y < 100 )
yield return Tuple.Create(x,y);
}
public IEnumerable<Tuple< int , int >> ProduceIndicesSelect()
{
return from x in Enumerable.Range( 0 , 100 )
from y in Enumerable.Range( 0 , 100 )
where x + y < 100
select Tuple.Create(x,y);
}
}

public static class Extensions
{
public static void ForAll<T>( this IEnumerable<T> sequence, Action<T> action)
{
foreach (T item in sequence)
{
action(item);
}
}
}



扩展属性应用


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论