راه حل: نباید اینکار را انجام دهید.
علت:
- اگر افزونهای قرار هست برنامهی اصلی را تغدیه کند - مثلا اعتبارسنجی - نام آن افزونه نیست و نباید به صورت افزونه تعریف شود. برنامهی اصلی بجز بارگذاری افزونهها هیچ کار دیگری قرار نیست با جزئیات آنها به صورت مستقیم انجام دهد.
- اگر افزونهای وابستهاست به افزونهی دیگر، نام اینکار افزونه نویسی نیست.
- شما قبل از اینکه بخواهید وارد این مبحث شوید، نیاز است کمی در مورد برنامههای افزونه پذیر موجود (در حالت کلی) مطالعه کنید و بررسی کنید که مثلا اگر یک برنامهی پخش music افزونه پذیر است، افزونهی A آن که توسط فرد X تهیه شده، آیا قرار است از امکانات افزونهی B که توسط فرد Y تهیه شدهاست، استفاده کند؟ چنین کاری اساسا بیمفهوم است و طراحی افزونه پذیر نام ندارد. آیا افزونهی A فایرفاکس از افزونهی B آن استفاده میکند و به آن وابستهاست؟ خیر.
- اگر قرار هست افزونهها به یک سری اطلاعات مشترک دسترسی پیدا کنند، این اطلاعات باید مشترک باشند و مستقل از هر کدام از افزونهها.
در مثالی که ارائه شد، اگر هدف کوئری گرفتن از لیست خبرهای یک کاربر است، این کار فقط باید در افزونهی News انجام شود (چون اگر قرار باشد سایر افزونهها به ریز اطلاعات news دسترسی داشته باشند که ضرورتی به افزونه تعریف کردن آن نبود) و به این صورت:
var userNewsList = _news.Include(x=>x.User).Where(x=>x.UserId == 1).ToList();