נניח שיש לנו פונקציה ואנחנו מעוניינים לבדוק האם הפרמטרים שלה תקינים.
למשל:
1
2
3
4
publicintMyMethod(int id, string name)
{
// MyMethod Content
}
אופציה אחת היא להוסיף את הוואלידיציה למתודה עצמה:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
publicintMyMethod(int id, string name)
{
if (id < 0)
{
thrownew ArgumentException("Argument must be positive", "id");
}
if (name == null)
{
thrownew ArgumentNullException("name");
}
// MyMethod Content
}
אלא ששימו לב שעל כל ארגומנט שיש לנו בפונקציה שאנחנו רוצים לבדוק, אנחנו מוסיפים עוד 3 שורות.
כך שאם יש לנו 3 פרמטרים שאנחנו צריכים לבדוק בפונקציה, נצטרך להוסיף לה 9 שורות לפחות.
ראינו בעבר דרך להוריד את מספר השורות (טיפ מספר 292), אבל זה פתרון חלקי, כי הוא מתמודד רק עם nullים. (הוא עדיין משאיר שורה אחת של וואלידציה במתודה, אבל אפשר להגיד שזה סביר)
אז איך נפתור את זה בInterception?
פה אנחנו נכניס אלמנט שלא השתמשנו בו עד כה והוא הוספת Attributeים מעל פרמטרים של הפונקציה (ראו גם טיפ מספר 245)
יהיה לנו Attribute שיציין שאנחנו מעוניינים בוואלידציה ומהסוג שלה, ונשים אותו מעל פרמטרים.