دسته بندی ها
03:11 1398/08/18

ارسال پیام به Telegram در Asp.net core

مشخصات سوال کننده :
کاربر : hamid_b     امتیاز کاربر : 518     رتبه کاربر : 4
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3342
هوش مصنوعی

پاسخ هوش مصنوعی

بله، برای هر پیاده سازی یک سرویس باید در فایل Startup.cs ثبت کنید. اما وقتی که شما چند پیاده سازی از یک اینترفیس دارید، باید زمانی که به آن تزریق می شود مشخص کنید که کدام یک را می خواهید استفاده کنید.

در مورد ثبت سرویس ها، شما می توانید به این شکل آنها را ثبت کنید:

services.AddTransient();
services.AddTransient();

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

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

private readonly IShareService _shareService;
public HomeController(IShareService shareService)
{
    _shareService = shareService;
}

سپس می توانید در متدهای کنترلر از _shareService استفاده کنید. همچنین برای انتخاب بین TelegramShare و TwitterShare به یک روش دیگر نیاز خواهید داشت، مانند ثبت به صورت جداگانه یا استفاده از پارامترهایی که نوع سرویس را مشخص می کنند.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 03:21 1398/08/18

به صورت طبیعی شما هر اینترفیس که دارید یک کلاس متناظر با اون هم دارید و برای استفاده از این Interface باید حتما در فایل startup.cs یک service رو براش تعریف کنید.

 

services.AddTransient<Interface, Class>();

 

همچنین نحوه استفاده از یک Interface هم در کلاسها یا کنترلها به صورت Dependency Injection هست. یعنی به شکل زیر

 

Public Class HomeController : Controller
{
   private readonly Interface _interfaceName;

   Public HomeController(Interface interfaceName)
   { 
     _interfaceName = interfaceName;
   }

}

 

در کدهای بالا در ابتدا یک متغیر به نام _interfaceName از اینترفیس تعریف شده و سپس در سازنده یا Constructor کنترلر Initial یا مقداردهی شده.

 

ارسال ییام به تلگرام با asp.net

 

این حالت به صورت نرمال برای استفاده از Interface ها وجود داره. اما راهکار دیگه ای هم هست که موقعی که قصد دارید از DI استفاده کنید موقعی که چندین ورودی یا Implementations دارید که برای این مورد توصیه می کنم این لینک رو مطالعه بفرمایید.

به این پاسخ امتیاز بدهید    0
امتیاز: 1635 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود