Dalam percubaan anda untuk menambah atribut pengesahan pada sifat pada masa jalan, anda telah menemui pengecualian yang menyatakan "Koleksi adalah tetap saiz." Untuk menyelesaikan isu ini, pertimbangkan perkara berikut:
Kod yang anda berikan melibatkan penggunaan kaedah FillAttributes. Kaedah khusus ini, walau bagaimanapun, mengharapkan tatasusunan atribut sebagai hujahnya, bukan satu atribut. Untuk membetulkan perkara ini, anda harus mengubah suai kod anda untuk menghantar tatasusunan yang mengandungi atribut yang diingini:
// Create an array of attributes var attributes = new ValidationAttribute[] { attribute }; // Invoke FillAttribute method methodInfo.Invoke(propDesc, new object[] { attributes });
Sebagai alternatif, anda boleh memintas kaedah FillAttributes sepenuhnya dan terus memberikan atribut kepada deskriptor sifat:
// Assign attribute to property descriptor propDesc.Attributes = new Attribute[] { new RequiredAttribute() };
Bergantung pada senario tertentu dan pilihan reka bentuk anda, penggabung pendekatan ini harus membenarkan anda untuk tambahkan atribut pada sifat pada masa jalan tanpa menemui pengecualian "Koleksi adalah saiz tetap".
Atas ialah kandungan terperinci Bagaimana untuk Menambah Atribut Pengesahan pada Hartanah Runtime dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!