PDA

View Full Version : کار با propertyInfo در کلاس های غیر استاتیکی



NIK
سه شنبه 24 خرداد 1390, 16:40 عصر
سلام

با propertyInfo میشه property یک کلاس استاتیک رو بدست آورد. کسی بلده چطور میشه پروپرتی های کلاسهای غیر استاتیکی رو بدست آورد؟

amirjalili
یک شنبه 29 خرداد 1390, 16:10 عصر
براي استخراج اطلاعات يک خصوصيت از يک شيء، فضاي نام Reflection کلاسي را به‌نام PropertyInfo در اختيار برنامه‌نويسان قرار داده ‌است.

همان‌طور که از نام اين کلاس پيداست، کاربرد آن در هنگامي است که بخواهيم اطلاعات يک خصوصيت يک کلاس را در برنامه نگهداري کنيم. علاوه بر آن، با کمک اين کلاس مي‌توانيم به محتواي يک خصوصيت نيز دسترسي پيدا کرده، مقدار آن‌را تغيير داده يا از آن در برنامه استفاده کنيم.

فرض‌کنيد يک کلاس به‌صورت زير تعريف شده ‌است:

}class testClass

private int _x

}public int x

getreturn _x

{set_x = value
{
اين کلاس ساده تنها داراي يک خصوصيت به‌نام x است. اگر بخواهيم با کمک کلاس PropertyInfo اطلاعات اين کلاس را استخراج کنيم، کافيست روش زير را پي گيريم:

testClass tc = new testClass()

PropertyInfo info = tc.GetType().GetProperty("x")

مشاهده مي‌کنيد که اطلاعات خصوصيت x توسط يک رشته (که بديهي است اين رشته مي‌تواند در زمان اجرا نيز ساخته شود) قابل دسترسي مي‌شود.

حال اگر بخواهيم به مقدار اين خصوصيت دست‌يابيم، کافيست تابع GetValue را از توابع کلاس PropertyInfo فراخواني کنيم.

info.GetValue(tc null)

نخستين پارامتر تابع GetValue نام شيء تعريف شده حاوي خصوصيت x مي‌باشد و پارامتر دوم آن نيز انديس عنصر (براي خصوصيات داراي انديس) است.

منبع :
http://www.khorasannews.com/News.aspx?id=197701&type=7&year=1388&month=10&day=23