نعم، من الممكن استخدام Microsoft.Extensions.Configuration
في .NET Core لربط تكوين Configuration بكائن يحتوي على مصفوفة. الأمر يتطلب استخدام الفئات الصحيحة وتهيئة التكوين بشكل صحيح.
في الكود الذي قدمته، يبدو أن هناك خطأ في الاستخدام. بدلاً من استخدام config.Bind(complexOptions);
يجب استخدام config.GetSection("SectionName").Bind(exampleOption);
حيث يجب تغيير “SectionName” إلى الاسم الصحيح للقسم الذي يحتوي على مصفوفتك. لذلك يمكنك تعديل الكود ليكون كما يلي:
-
تسجيل الاستثناءات باستخدام Logger.NET28/03/2024
-
كيفية تمرير المعاملات في لغة التجميع x8606/03/2024
csharppublic class Test
{
private class ExampleOption
{
public int[] Array {get;set;}
}
[Test]
public void CanBindArray()
{
// ARRANGE
var config =
new ConfigurationBuilder()
.AddInMemoryCollection(new Liststring, string>>
{
new KeyValuePair<string, string>("SectionName:Array", "[1,2,3]")
})
.Build();
var exampleOption = new ExampleOption();
// ACT
config.GetSection("SectionName").Bind(exampleOption);
// ASSERT
exampleOption.Array.ShouldContain(1);
}
}
بهذه الطريقة، يجب أن يتم ربط مصفوفتك بشكل صحيح دون وجود استثناء. تأكد من تعديل “SectionName” إلى الاسم الصحيح لقسم التكوين الذي تريد ربطه بالكائن الخاص بك.
المزيد من المعلومات
بالتأكيد! في .NET Core، يُستخدم Microsoft.Extensions.Configuration
لإدارة إعدادات التطبيق. يمكنك تكوين التطبيق باستخدام مصادر مختلفة مثل ملفات JSON، المتغيرات البيئية، القيم المُخزنة في قاعدة البيانات، أو أي مصدر آخر يُمكن تحميل الإعدادات منه.
عندما تقوم بتعريف فئة تُمثل الإعدادات التي تريد ربطها بالتكوين، يجب أن تتطابق أسماء الخصائص في الفئة مع أسماء المفاتيح في التكوين. في حالة الاستخدام الذي ذكرته، يُفترض أن تكون القيمة المُراد ربطها مصفوفة من الأرقام مُعرَّفة تحت مفتاح “Array” في التكوين.
لكي تقوم بالربط بشكل صحيح، يجب توفير الاسم الصحيح للقسم في التكوين الذي يحتوي على المصفوفة. بعد ذلك، يُمكنك استخدام Bind
لربط القسم المحدد بكائن الفئة الخاص بك.
يُمكنك استكمال الكود السابق لتكميل اختبار الربط كما يلي:
csharppublic class Test
{
private class ExampleOption
{
public int[] Array {get;set;}
}
[Test]
public void CanBindArray()
{
// ARRANGE
var config =
new ConfigurationBuilder()
.AddInMemoryCollection(new Liststring, string>>
{
new KeyValuePair<string, string>("SectionName:Array", "[1,2,3]")
})
.Build();
var exampleOption = new ExampleOption();
// ACT
config.GetSection("SectionName").Bind(exampleOption);
// ASSERT
Assert.Equal(new int[] {1, 2, 3}, exampleOption.Array);
}
}
هذا يتوقف على فرضية أن القيمة المُعرَّفة تحت المفتاح “Array” هي مصفوفة صحيحة تحتوي على الأرقام 1، 2، و3. تأكد من تعديل الكود وفقًا لتكوين التطبيق الخاص بك.