PDA

View Full Version : سوال: ارسال خود یک کلاس به یک متد بصورت پویا



ASKaffash
دوشنبه 27 خرداد 1387, 19:32 عصر
سلام
آیا میشود یک کلاس را بعنوان پارامتر ورودی به یک متد ارسال کرد؟
تاکید میکنم منظورم ارسال یک شی از یک کلاس نیست بلکه خود کلاس است بصورت پویا یعنی نام کلاس ورودی را نمیدانیم ومیخواهیم داخل متد از آن کلاس ورودی متغیر شی بگیریم
بازهم تاکید میکنم موضوع Generic هم نیست که کلاس به کلاس دیگر پاس داده میشود.

Mahdi.Kiani
دوشنبه 27 خرداد 1387, 20:41 عصر
منظورتون اینه که با نام کلاس به صورت String به یک متد، یک نمونه از کلاس ایجاد کنید؟
اگر منظورتون اینه که از طریق Reflection میشود. اگر همین را می خواهید تا نمونه کد بهتون بدم. در غیر اینصورت توضیحات بیشتر لازم است

اگر منظور همانی بود که عرض کردم به این پست (http://barnamenevis.org/forum/showpost.php?p=538061&postcount=88") مراجعه کنید

موفق باشید

mohammad272005
دوشنبه 27 خرداد 1387, 20:45 عصر
ممكنه صورت مسئله رو دقيق بگي؟ دقيقا بگو چي ميخواي!

مهدی کرامتی
دوشنبه 27 خرداد 1387, 23:02 عصر
اگر منظور همانی بود که عرض کردم به این پست (http://barnamenevis.org/forum/showpost.php?p=538061&postcount=88%22) مراجعه کنید
این طوری که ایشان نوشته اند منظورشان همان است.

sinpin
دوشنبه 27 خرداد 1387, 23:06 عصر
...یعنی نام کلاس ورودی را نمیدانیم...
وقتي نام كلاس مشخص نيست پس نميتونه حالت زير باشه :

منظورتون اینه که با نام کلاس به صورت String به یک متد، یک نمونه از کلاس ایجاد کنید؟

______
دوست عزيز بهتره كاربرد كد مورد نظرتون رو بفرماييد تا دوستان دقيقتر بتونند راهنمايي كنند.

Mrs.Net
دوشنبه 27 خرداد 1387, 23:30 عصر
البته که منظورشون همین بوده. و از اینکه گفتند نام کلاس را نمیدانیم منظورشون بوده که نام کلاس بصورت پارامتر ورودی به متد ارسال میشه.
از همون reflection حل میشه
(شایدم نبود)

Mahdi.Kiani
دوشنبه 27 خرداد 1387, 23:36 عصر
سلام
آیا میشود یک کلاس را بعنوان پارامتر ورودی به یک متد ارسال کرد؟
تاکید میکنم منظورم ارسال یک شی از یک کلاس نیست بلکه خود کلاس است بصورت پویا یعنی نام کلاس ورودی را نمیدانیم ومیخواهیم داخل متد از آن کلاس ورودی متغیر شی بگیریم
بازهم تاکید میکنم موضوع Generic هم نیست که کلاس به کلاس دیگر پاس داده میشود.



وقتي نام كلاس مشخص نيست پس نميتونه حالت زير باشه :


______
دوست عزيز بهتره كاربرد كد مورد نظرتون رو بفرماييد تا دوستان دقيقتر بتونند راهنمايي كنند.

با توجه به صحبت هاشون من فکر کنم که منظورشون همین ( reflection ) بوده..
و احتمالا منظورشون از این که نمی دونن اسم کلاس چیه، این بوده که آرگومانی از جنس کلاس مزبوطه به متد فرستاده نخواهد شد..

sinpin
سه شنبه 28 خرداد 1387, 07:55 صبح
حق با شماست،
آقاي ASKaffash (http://barnamenevis.org/forum/member.php?u=63973) مشكل شما بايد با ريفلكشن حل بشه در غير اينصورت سئوال رو دقيقتر مطرح كنيد.

اَرژنگ
سه شنبه 28 خرداد 1387, 09:43 صبح
سلام
آیا میشود یک کلاس را بعنوان پارامتر ورودی به یک متد ارسال کرد؟
تاکید میکنم منظورم ارسال یک شی از یک کلاس نیست بلکه خود کلاس است بصورت پویا یعنی نام کلاس ورودی را نمیدانیم ومیخواهیم داخل متد از آن کلاس ورودی متغیر شی بگیریم
بازهم تاکید میکنم موضوع Generic هم نیست که کلاس به کلاس دیگر پاس داده میشود.

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

ASKaffash
سه شنبه 28 خرداد 1387, 13:28 عصر
سلام به همه دوستان
من یک Engine پیاده سازی کرده ام که یک پروژه ساز با حداقل کد است این موتور تعداد زیادی کلاس وزیر کلاس و متد و... دارد این مجموعه ها توسط تعدادی خاصیت ومتد به یک دیگر متصل میشوند و درموارد زیادی اشیا را به یکدیگر پاس میدهند که عموما از طریق Constructor ها اتفاق می افتد ولی دریک قابلیت جدید برای اینکه همه نوع ورودی مثلا DataGrid دات نت و Janus و ... را میخواهم هندل کنم خوب وقتی کلاس ها معلوم هستند خیلی ساده با Cast کردن مدیریت اشیا از قبل دانسته را به دست میگیرم ولی وقتی با یک کلاس نامعلوم طرف میشوم اولین راه حل به ذهن هرفرد reflection یا Generic یا ... خواهد بود ولی به دنبال روشی میگردم که اگر بشود کلاس را بعنوان وروی بگیرم وبعداز کنترل روی انواع Member های موردنظر شی را ایجاد و شی را تحویل برنامه صدا زننده کننم به همین علت است که این سئوال را مطرح کردم که دوستان با تجربه کمک کنند درغیر اینصورت به سمت reflection خواهم رفت.