在運行時向屬性添加屬性可以靈活配置和驗證物件。但是,在使用某些方法時,您可能會遇到「集合大小固定」異常。
異常的起源
當您嘗試修改集合時,會發生此錯誤屬性描述符的內建屬性集合,通常定義為固定大小的陣列。直接修改此集合可能會導致異常。
解決方案
要避免此問題,您可以動態建立一個新的屬性集合,而不是修改現有屬性集合。以下是程式碼的修訂版本:
var propDesc = TypeDescriptor.GetProperties(typeof(T))[propName]; var newAttribs = propDesc.Attributes.Cast<Attribute>().ToList(); var attribute = new RequiredAttribute(); newAttribs.Add(attribute); // Set the new attributes collection in the property descriptor propDesc.SetAttributeCollection(new ReflectiveAttributeCollection(newAttribs));
此程式碼建立一個具有所需屬性的新 ReflectiveAttributeCollection,包括RequiredAttribute。透過在 PropertyDescriptor 中設定這個新集合,您可以動態地為屬性新增屬性。
其他注意事項
透過遵循這些準則,您可以在運行時成功向屬性添加屬性並增強程式碼的靈活性。
以上是如何在 C# 中向屬性動態新增屬性而不出現「集合具有固定大小」異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!