TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 550 subscribers
Post #359 289
⚙️ کار با منابع مختلف کانفیگ

سیستم کانفیگ ASP.NET Core از چندین منبع پشتیبانی می‌کند. هنگام استفاده از Options Pattern با FluentValidation، به یاد داشته باشید که اعتبارسنجی صرف‌نظر از منبع کار می‌کند:

🔹️متغیرهای محیطی (Environment variables)
🔹️Azure Key Vault
🔹️User secrets
🔹️فایل‌های JSON
🔹️کانفیگ در حافظه (In-memory configuration)

این ویژگی مخصوصاً برای برنامه‌های containerized مفید است که کانفیگ از طریق متغیرهای محیطی یا secretهای mount شده می‌آید.

🧪 تست Validatorهای خود

یکی از مزایای استفاده از FluentValidation این است که Validatorها بسیار آسان تست می‌شوند:
// استفاده از متدهای کمکی FluentValidation.TestHelper
[Fact]
public void GitHubSettings_WithMissingAccessToken_ShouldHaveValidationError()
{
// Arrange
var validator = new GitHubSettingsValidator();
var settings = new GitHubSettings { RepositoryName = "test-repo" };

// Act
TestValidationResult<GitHubSettings>? result = await validator.TestValidate(settings);

// Assert
result.ShouldNotHaveAnyValidationErrors();
}


✅ خلاصه

با ترکیب FluentValidation با Options Pattern و ()ValidateOnStart، یک سیستم اعتبارسنجی قدرتمند ایجاد می‌کنیم که تضمین می‌کند کانفیگ برنامه درست باشد از همان ابتدا.

مزایای این روش:

• قوانین اعتبارسنجی بیان‌گراتر و انعطاف‌پذیرتر نسبت به Data Annotations

• جداسازی منطق اعتبارسنجی از مدل‌های کانفیگ

• کشف خطاهای کانفیگ در زمان startup برنامه

• پشتیبانی از سناریوهای اعتبارسنجی پیچیده

• قابلیت تست آسان

این الگو به ویژه در معماری‌های میکروسرویس یا برنامه‌های containerized ارزشمند است، جایی که خطاهای کانفیگ باید فوراً تشخیص داده شوند و نه در زمان اجرا.

به یاد داشته باشید که Validatorهای خود را به درستی ثبت کنید و از ()ValidateOnStart استفاده کنید تا اعتبارسنجی در زمان شروع برنامه اجرا شود.

🏷 هشتگ‌ها:
#ASPNetCore #FluentValidation #OptionsPattern #Validation
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 →