PDA

View Full Version : بررسی انواع collection ها



aghayex
سه شنبه 17 اردیبهشت 1392, 23:33 عصر
با سلام
دوستام من در یه برنامه از معماری mvvm استفاده کردم و همین طور که می دونید داده های اشیایی مثل دیتا گرید , کمبو باکسها و ... باید در یک collection باشه . خود من اومدم از observablecollection , readonlycollecion استفاده کردم اما یکی از دوستان سفارش کرد که به جای اینها از اشیا دیگری مثل : ICollectionView و IEditableCollectionView و IPagedCollectionView استفاده کنم حالا از دوستانی که در این خصوص کار کردن می خوام که منو در انتخاب بهتر کمک کنن.
یک مشکلی که من با observablecollection در ویرایش یک رکورد هست که در این شی درج شده و ...

FastCode
چهارشنبه 18 اردیبهشت 1392, 06:52 صبح
اگر من بودم از SortedSet و SortedDictionary استفاده میکردم. و نسخه observable شون رو خودم میساختم.

ولی بین این موارد اینترفیس ها بهتر هستن

aghayex
چهارشنبه 18 اردیبهشت 1392, 09:08 صبح
تشکر
میشه توضیح بیشتری بدید

aghayex
چهارشنبه 18 اردیبهشت 1392, 17:32 عصر
تشکر
میشه توضیح بیشتری بدید

FastCode
چهارشنبه 18 اردیبهشت 1392, 17:44 عصر
سلام.بخشید.پست اولتون رو دیدم ولی فراموش کردم همون موقع پاسخ بدم.
این دو کلاس Overhead بسیار بسیار بالایی دارند و اگر اشیا شما اطلاعات جداول دیتابیستون باشه صد در صد یک کلید یا بیشتر داره که میتونید ازش برای Sort کردن اطلاعاتتون استفاده کنید و از کلاس های SortedSet و SortedDictionary استفاده کنید که سرعت فوقالعاده بیشتر و سربار کمتری در تعداد بالا دارند.
برای Observable بودن هم میتونید یک wrapper برای SortedSet و SortedDictionary بنویسید و روی متود های Insert و Remove
event های مربوطه رو بزارید.حتی ممکنه بخواهید event ه Alter رو هم پیاده کنید که با این دو Collection امکانش وجود نداره.

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

نگته ی دیگه ای که هست ممکنه بخواهید در مجموعتون چند تا آپدیت رو با یک event منتشر کنید یا وقتی که کالکشن هنوز آماده نشده و در حال انتظار یا populate شدن هست هیچ event ی trig نشه ولی بتونید در همون لحظه برای دیتای خاصی که تغییر میکنه event با تاخیر داشته باشید.با تجربه ای که از ساخت ORM دارم فکر میکنم همین مورد به تنهایی نظرتون رو عوض کنه.احتمالا تا الان فکر نکردید که اگر موقع populate شدن event ی بیاد که همون لحظه قابلیت پاسخگوییش رو ندارید ولی میخواهید بلافاصله بعد از populate شدن بررسیش کنید چه کار میکنید.

با توجه به طراحی ای که دارید انجام میدید شاید دوست داشته باشید یک سری به مقاله مربوط به finger-tree در ویکیپدیا بزنید.tree مورد علاقه منه.ازش خوشتون میاد.

aghayex
جمعه 20 اردیبهشت 1392, 10:52 صبح
من نحوه کار با IEditableCollectionView و ICollectionView رو پیگیری می کنم اگه اطلاعاتی دارید ارائه کنید ممنون میشم