
























今天无意中在一个老外的博客里看到了属性的经典设置,尤其是在Set属性时所做的判断那是相当的经典,至少是我见到的经典,也许是我见识太少了.
,他在里面用到了其他基本数据类型的TryParse()方法是很经典.不卖官子了,下面是代码:
1
public class TransactionRequestInfo
2
{
3
public string FirstName { get; set; }
4
public string LastName { get; set; }
5
public string Address { get; set; }
6
public string City { get; set; }
7
public string State { get; set; }
8
public string Country { get; set; }
9
public string Description { get; set; }
10
11
private decimal _amount;
12
public decimal ChargeAmount
13
{
14
get
15
{
16
return _amount;
17
}
18
set
19
{
20
_amount = Decimal.Round(value, 2);
21
}
22
}
23
24
private string _zip;
25
public string Zip
26
{
27
get
28
{
29
return _zip;
30
}
31
set
32
{
33
int res;
34
if (int.TryParse(value, out res))
35
{
36
if (res > 99999)
37
{
38
throw new ArgumentException("Zip Code Value invalid");
39
}
40
else
41
{
42
_zip = res.ToString().PadLeft(5, ‘0′);
43
}
44
}
45
else
46
{
47
throw new ArgumentException("Zip code must be numeric");
48
}
49
}
50
51
}
52
53
private string _securityCode;
54
public string SecurityCode
55
{
56
get
57
{
58
return _securityCode;
59
}
60
set
61
{
62
int res;
63
if (int.TryParse(value, out res))
64
{
65
if (res > 999)
66
{
67
throw new ArgumentException("Security Code Value invalid");
68
}
69
else
70
{
71
_securityCode = res.ToString().PadLeft(3, ‘0′);
72
}
73
}
74
else
75
{
76
throw new ArgumentException("Security code must be numeric");
77
}
78
}
79
80
}
81
82
private string _cardNumber;
83
public string CardNumber
84
{
85
get
86
{
87
return _cardNumber;
88
}
89
set
90
{
91
long res;
92
if (long.TryParse(value, out res))
93
{
94
_cardNumber = res.ToString();
95
}
96
else
97
{
98
throw new ArgumentException("Card Number may only contain numbers");
99
}
100
}
101
}
102
103
private string _expDate;
104
public string ExpDate
105
{
106
get
107
{
108
return _expDate;
109
}
110
set
111
{
112
int res;
113
if (int.TryParse(value, out res))
114
{
115
string exp = res.ToString().PadLeft(4, ‘0′);
116
int month = int.Parse(exp.Substring(0, 2));
117
int yr = int.Parse(exp.Substring(2, 2));
118
119
if (yr > DateTime.Now.Year ||
120
(yr == DateTime.Now.Year && month >= DateTime.Now.Month))
121
{
122
_expDate = month.ToString().PadLeft(2, ‘0′) +
123
"/" + yr.ToString().PadLeft(2, ‘0′);
124
}
125
else
126
{
127
throw new ArgumentException("Expiration Date already passed");
128
}
129
}
130
else
131
{
132
throw new ArgumentException("Expiration Date must be numeric");
133
}
134
}
135
}
136
}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。