字段去除空格
代码
[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);
}
}
}

