PDA

View Full Version : پیدا کردن ویژگی های کلاس فرزند



AmirAlimadadi
دوشنبه 07 اردیبهشت 1388, 13:47 عصر
با سلام به همه
دوستان من یه کلاس دارم که از اون یه کلاس دیگه ارث می بره، می خوام که از توی کلاس پدر تمام Property ها و ... کلاس فرزند رو پیدا کنم. باید تذکر بدم که من نمی خوام این poperty ها و... رو تغییر بدم، فقط می خوام اونا رو با نام پیدا کنم.
از یکی از دوستام شنیدم که از یه چیزی به نام Attribute باید استفاده کنم ولی چیزی در این مورد نمی دونم. ممنون از کمکتون

esmaeily-hosein
دوشنبه 07 اردیبهشت 1388, 13:56 عصر
Type type = typeof(className);
type.GetFields();
type.GetProperties();

AmirAlimadadi
دوشنبه 07 اردیبهشت 1388, 14:17 عصر
ممنون از شما دوست عزیز
من خودم این روش رو می دونستم اما به نظر نمی رسه با این روش بشه مقدار property رو به دست آورد، آیا راهی برای پیداکردن مقدار علاوه بر نام و ... وجود داره

prankster
دوشنبه 07 اردیبهشت 1388, 15:20 عصر
كلاس فرزند به كلاس پدر دسترسي دارد نه بر عكس!
كد بالا كاملا درست است از طريق BindingFlags مي توان فيلد هاي با modifier هاي متفاوت را مرور كرد:


typeof(ClassName).GetFields(System.Reflection.Bind ingFlags.Public |
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance |
System.Reflection.BindingFlags.Static);


براي پيدا كردن مقدار:


object value = obj.GetType().GetField("FieldName").GetValue(obj);

AmirAlimadadi
دوشنبه 07 اردیبهشت 1388, 15:33 عصر
دوست عزیز من که نگفتم این کد غلط هست، اما مشکل من رو حل نکرده، توی این کد دومی هم که نوشتین obj چی هست؟؟ اون رو تعریف نکردین.

AmirAlimadadi
دوشنبه 07 اردیبهشت 1388, 16:06 عصر
ببینید شاید من منظورم رو بد گفتم، من می خوام یه کلاس بنویسم که توی اون یه (مثلا) تابعی باشه که public هست (یعنی توی کلاسهای فرزند هم قابل دسترسی هست)، بعد توی اون تابع تمام فیلدهای کلاس رو (بدون استفاده از نام فیلد) تشخیص بدم و مقدار اونا رو به دست بیارم.

esmaeily-hosein
دوشنبه 07 اردیبهشت 1388, 16:35 عصر
object value = obj.GetType().GetField("FieldName").GetValue(obj);


این کد هم درسته فکر کنم تو باید جای obj از this استفاده کنی .

AmirAlimadadi
سه شنبه 08 اردیبهشت 1388, 11:21 صبح
ممنون از شما، مشکلم حل شد