البرمجة

ربط تكوين .NET Core بمصفوفة

نعم، من الممكن استخدام Microsoft.Extensions.Configuration في .NET Core لربط تكوين Configuration بكائن يحتوي على مصفوفة. الأمر يتطلب استخدام الفئات الصحيحة وتهيئة التكوين بشكل صحيح.

في الكود الذي قدمته، يبدو أن هناك خطأ في الاستخدام. بدلاً من استخدام config.Bind(complexOptions); يجب استخدام config.GetSection("SectionName").Bind(exampleOption); حيث يجب تغيير “SectionName” إلى الاسم الصحيح للقسم الذي يحتوي على مصفوفتك. لذلك يمكنك تعديل الكود ليكون كما يلي:

csharp
public 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 لربط القسم المحدد بكائن الفئة الخاص بك.

يُمكنك استكمال الكود السابق لتكميل اختبار الربط كما يلي:

csharp
public 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. تأكد من تعديل الكود وفقًا لتكوين التطبيق الخاص بك.

زر الذهاب إلى الأعلى