PDA

View Full Version : سوال: کار با properties یک instance



mpggcobol
شنبه 27 تیر 1388, 11:08 صبح
سلام

یک سوال :
فرض کنید یک کلاس دارم که 20 تا property داره مثلا
name1 , name2 ,name 3 ,name 4.........,name20
اول اینکه اگر یک شی از این کلاس من ایجاد کردم مثل
class1 forexampleOfAnyThing=new class1();
بعد خواستم property هاشو صدا کنم باید بگم

forexampleOfAnyThing.name1,forexampleOfAnyThing.na me2,forexampleOfAnyThingname3,...........,forexamp leOfAnyThing.name20
چه جوری میشه از نوشتن forexampleOfAnyThing صرف نظر کرد.

دوم اگر خواستم اینو داشته با شم چه کار کنم
foreach(property prp in forexampleOfAnyThing)
{
arraylist1.add(prp.value)
}

سوم
اگر خواستم property ها رو به کنترل های فرمم لینک بدم چه کنم

far9090
شنبه 27 تیر 1388, 11:49 صبح
شما برای استفاده از propery هر instance ابتدا نیاز به بردن نام اون instance دارید . مورد اول فکر کنم منتفیه .
در مورد موضوع دوم هم حلقه foreach برای پیمایش درون مجموعه ها یا همان لیست هاست و امکان دسترسی به عناصر لیست ها را به ما می دهد . که این عمل در مورد property دیگر امکان پذیر نیست .

Unknownlive
شنبه 27 تیر 1388, 11:56 صبح
می تونی از نوغ Static استفاده کنی تا هر بار نام نمونه پیاده سازی شده را نیاری اما نام کلاس را باید بیاری د ضمن منظورت را کمی کامل تر بیان کن

HDDSoft2001
شنبه 27 تیر 1388, 11:57 صبح
با سلام


در مورد سوال اول باید بگم راهی نداری که بخواهی از اسم شی فاکتور بگیری توی سی شارپ.

در مورد سوال دوم هم که گفتی میخواهی برای دست یابی به خواص از حلقه استفاده کنی. باید از رفلکشن ها سود برد.



Type t = typeof(Form);

System.Reflection.PropertyInfo[] lstPro =
t.GetProperties(BindingFlags.Public);

for (int i = 0;i<lstPro.Length ;i++ )
{
lstPro[i] = "Value" + i.ToString();
}

mpggcobol
شنبه 27 تیر 1388, 15:35 عصر
Type t = typeof(Form);

میشه نوشت


Type t = typeof(Class1);

در مورد BindingFlags.Public یکم توضیح بدید
ممنون

HDDSoft2001
شنبه 27 تیر 1388, 16:19 عصر
با سلام

برای مشخص کردن نوع خاصیت. در مثال ما برای گرفتن خاصیت های public هست. که شما می توانید هر نوعی را بدست آورید. کافی است مقدار شمارشی اونو ببینید.