TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 549 subscribers
Post #298 215
این رویکرد فقط برای کلاس‌های middleware که بر اساس قرارداد ایجاد شده‌اند، مناسب است. برای تزریق سرویس‌های scoped به کلاس‌های middleware که اینترفیس IMiddleware را پیاده‌سازی می‌کنند، به سادگی از سازنده استفاده کنید:

public class ExecutionTimeMiddleware : IMiddleware
{
private readonly ILoggingService _loggingService;
public ExecutionTimeMiddleware(ILoggingService loggingService)
{
_loggingService = loggingService;
}
public async Task InvokeAsync(HttpContext context, RequestDelegate next)
{
// ...
}
}


📌 نکته: هنگام ایجاد یک کلاس middleware که اینترفیس IMiddleware را پیاده‌سازی می‌کند - شما مسئول انتخاب یک طول عمر DI مناسب برای آن هستید. شما می‌توانید middleware را به صورت Singleton, Scoped یا Transient ایجاد کنید، آنچه را که در هر مورد استفاده بهترین است، انتخاب کنید.

خلاصه 📝

شما می‌توانید یک middleware سفارشی را به روش‌های زیر ایجاد کنید:

🔹 ارائه یک delegate برای متد Use در کلاس WebApplication.

🔹 ایجاد یک کلاس Middleware بر اساس قرارداد.

🔹 ایجاد یک کلاس Middleware با ارث‌بری از اینترفیس IMiddleware.

انتخاب ترجیحی من، ایجاد یک middleware با ارث‌بری از اینترفیس IMiddleware است. این رویکرد یک راه امن‌تر و راحت‌تر برای ایجاد middlewareها و یک استراتژی تزریق وابستگی سرراست از طریق سازنده ارائه می‌دهد. و همچنین کنترل کاملی بر روی طول عمر middleware به شما می‌دهد.

امیدوارم این مقاله برایتان مفید باشد.👋🏻
More from @csharpgeeks
  1. Sep 22, 2026یه مدتی قراره از دنیای NET. فاصله بگیرم، چون وقتشه برم سربازی. راستش نمیدونم این مدت رو چج…
  2. Sep 20, 2026🔥 حالا مشکل اصلی: Alert Storm فرض کن Database از دسترس خارج شده. ۱۰۰ Pod داری. هر Pod می‌…
  3. Sep 20, 2026🚨 طراحی سیستم Monitoring و Alerting در یک سیستم بزرگ فرض کن ساعت ۳ صبح است. سیستم شما با…
  4. Sep 19, 2026#Engineering_Leadership تصمیم نگرفتن هم یک تصمیم است یه چیز عجیب توی تیم‌های مهندسی: گاهی…
  5. Sep 19, 2026☑ چک‌لیست آماده‌سازی تیم، فرایندها و زیرساخت برای توسعه با AI توجه: هیچ چک‌لیستی جهان‌شمول…
  6. Sep 19, 2026📌پایان یک انتظار طولانی: اعتبارسنجی ناهمگام (Async Validation) در NET 11.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →