منظور از Dependency، وابستگی های یک کلاس برای عمل کردن به وظیفه خود می باشد. به منظور یادگیری مباحث مربوط به Dependency ها توصیه می کنیم از بسته ی آموزش ویدئویی Inversion of Control و IoC Container ها استفاده کنید. یک موضوع بسیار مهم در رابطه با Dependency های مربوط به یک کلاس صراحتاً اعلام شدن آنها می باشد. منظور از همین واژه Explicit نیز صراحتا اعلام شدن Dependency ها می باشد. بگذارید برای درک هرچه بهتر این موضوع آن را بیشتر بررسی کنیم. متدها و کلاسهایی که صراحتا به Dependency های خود اقرار می کنند به بهترین شکل ممکن ایجاد شده اند. به عبارت دیگر یک کلاس بایدهمواره در تابع سازنده خود Dependency های خود را مشخص کند. اگر یک کلاس در تابع سازنده خود نگوید که برای انجام دادن وظیفه خود نیاز به چه کلاس هایی دارد اصطلاحاً میگوییم که آن کلاس نسبت به کلاینت های خود غیر صادق می باشد. در واقع تابع سازنده در این اصل بسیار مهم در توسعه نرمافزار شبیه به یک قرارداد عمل میکند. این قرارداد می بایست دقیقاً به مصرفکنندگان یک کلاس بگوید که برای استفاده کردن از آن کلاس نیازمند تحویل دادن چه Dependency هایی می باشند. اگر یک کلاس یک تابع سازنده بدون پارامتر داشته باشد و در توابع سازنده دیگر نیز لحاظ نکنند که چه Dependency هایی را نیازمند است و سپس در عملکرد خود نیاز به آن Dependency ها داشته باشد میتواند در زمان اجرا شدن برنامه مشکلات زیادی را ایجاد کند.
اگر سعی کنید که در روند توسعه نرمافزار موفق تان از اصل بسیار مهم Explicit dependency استفاده کنید کلاس ها و متدهایی را خواهید داشت که با مصرف کنندگان خود صادق هستند. این موضوع باعث میشود که کد ایجاد شده هم User Friendly تر و هم خود مستند و یا self-documenting باشد. این موارد تماماً از قراردادهای کدنویسی و یا Coding Contract ها به حساب می آیند. در رابطه با این موارد و موارد مشابه در بسته ی آموزش ویدئویی کدنویسی تمیز: نوشتن کد برای انسان ها و آموزش متنی کدنویسی تمیز (Clean Coding) در سی شارپ صحبت کرده ایم. با استفاده از اصل Explicit dependency مصرفکنندگان یک کلاس و یا یک متد میتوانند با اعتماد به نفس بالا از آن استفاده کنند و مطمئن باشند درصورت لحاظ نمودن Dependency های یک کلاس در درون تابع سازنده آن کلاس می تواند عملیات مورد نظر خود را به بهترین شکل ممکن انجام بدهند.