158. PropertyInfo

בדומה לMethodInfo המייצג Metadata של מתודה, קיים גם הטיפוס PropertyInfoהמייצג Metadata של Property.

השימוש בו הוא די פשוט:

1
2
PropertyInfo lengthInfo =
typeof (string).GetProperty("Length");

כעת נוכל לברר ככל העולה על רצוננו אודות Property זה:

(באופן דומה מאוד לMethodInfo, ראו גם טיפ מספר 146)

1
2
3
4
5
6
7
Console.WriteLine(lengthInfo.Name); // Length
Type returnType = lengthInfo.PropertyType; // typeof(int)
bool hasGet = lengthInfo.CanRead; // true
bool hasSet = lengthInfo.CanWrite; // false

באופן דומה לMethodInfo, נוכל גם להפעיל Property כזה בReflection על Instance של טיפוס שהProperty שייך לו, לדוגמה:

1
2
3
4
5
6
7
PropertyInfo lengthInfo =
typeof(string).GetProperty("Length");
object myString =
"It was the best of times, it was the worst of times... ";
int length = (int)lengthInfo.GetValue(myString, null); // 55

וגם Set:

1
2
3
4
5
6
7
8
9
PropertyInfo ageInfo =
typeof(Person).GetProperty("Age");
object myPerson =
new Person("Jarvis","Lorry");
ageInfo.SetValue(myPerson, 351, null);
Console.WriteLine(((Person)myPerson).Age); // 351

שיהיה שבוע משתקף לטובה

שתף