PDA

View Full Version : حرفه ای: تشخیص تعداد فراخوانی کلاس



gerdioz
یک شنبه 05 تیر 1390, 10:10 صبح
سلام من چند تا سوال از اساتید داشتمپ


چگونه میشه فهمید یک کلاس تا حالا چند بار فراخوانی شده
چگونه میشه آخرین مقادیری که یک کلاس در آخرین فراخوانی داشته رو بدست آورد
چگونه میشه یک کلاس را گونه ای طراحی کرد که فقط یکبار فراخوانی بشه

با تشکر از تمام اساتید

sinashahab
یک شنبه 05 تیر 1390, 11:50 صبح
میتونی به واسطه ی یه کلاس دیگه با کلاس مربوطه ارتباط برقرار کنی و مقادیری که لازم داری رو اونجا نگه داری

Felony
یک شنبه 05 تیر 1390, 12:33 عصر
میتونید یک Class Variable تعریف کنید و تعداد دفعات صدا زده شدن رو تو Constructor کلاستون بهش اضافه کنید ؛ اگر #C بهتون امکان گرفتن تعداد مراجعات رو بده ( Reference Count ) میتونید از اون هم استفاده کنید که فکر نمیکنم همچین امکانی رو در اختیار برنامه نویس بزاره .

mehdi.mousavi
یک شنبه 05 تیر 1390, 13:31 عصر
سلام من چند تا سوال از اساتید داشتمپ



چگونه میشه فهمید یک کلاس تا حالا چند بار فراخوانی شده
چگونه میشه آخرین مقادیری که یک کلاس در آخرین فراخوانی داشته رو بدست آورد
چگونه میشه یک کلاس را گونه ای طراحی کرد که فقط یکبار فراخوانی بشه


با تشکر از تمام اساتید


سلام.


کلاس فراخوانی نمیشه. این متودها، Property ها، Event ها و ... ی تعریف شده در یک کلاس هستند که فراخوانی میشن. اگر منظورتون پیدا کردن کلیه نقاطی در کد هستش که کلاس شماره رو به نوعی مورد استفاده قرار داده اند، می تونید Cursor رو روی نام کلاس قرار بدید، سپس کلید ALT-SHIFT-F12 رو بزنید تا کلیه نقاطی از کد که در اونها از کلاس مزبور استفاده شده، پیدا شده و در Find Window در Visual Studio به نمایش در بیاد. اما اگر هدفتون Reference Counting هستش، میتونید توسط متغیری که در Constructor اونو افزایش داده و در Dispose اونو یک واحد کاهش خواهید داد، به هدفتون برسید. طبیعتا باید این متغیر از نوع static باشه و صد البته دسترسی به اون Thread Safe.
گفتم کلاس فراخوانی نمیشه... آخرین مقادیر، همواره از طریق آخرین Instance از یک کلاس در دسترسه. بنابراین کافیه تا آخرین Instance یک کلاس رو در جایی نگهداری کنید.
گفتم کلاس فراخوانی نمیشه! اما اگر منظورتون ایجاد یک کلاس Singleton هستش (کلاسهایی که فقط و فقط یک Instance از اونها ایجاد میشه)، میتونید به این آدرس (http://msdn.microsoft.com/en-us/library/ff650316.aspx) رجوع کنید.

موفق باشید.

gerdioz
یک شنبه 05 تیر 1390, 14:08 عصر
سلام
هدف من از طرح این سوال اینه که
من میخوام یک متغیر رشته ای (connectionString) رو در کلاس بافراخوانی مقدار بدهم
حال اگر برای بار دوم از کلاس بخواد استفاده بشه در صورتی که یک بار استفاده شده ممانعت کنه ولی این قابلیت رو داشته باشه که به متغیری که در آخرین بار مقداری گرفته دسترسی داشته باشم و بتونم از اون متغیر استفاده کنم
دلیل استفاده:
من یک بار اکسس در شبکه دارم که مسیر بانک -متغیر رشته ای (connectionString) - در اون ذخیره شده حال موقعی که کاربری خاص به برنامه وارد میشه یک کپی اغز بانک در داخل هارد ریخته و از این به بعد تمام ارجاعات از کلاس به این آدرس باشه و به بانک داخل سرور ارجاع نشه این باعث میشه دسترسی های غیر ضروری(دسترسی هایی که فقط برای خواندن و گزارش گیری) به بانک سرور ارجاع نشه
فکر کنم این نوع کلاس بتونه بصورت منطقی مشکل رو حل کنه