在嘗試在運行時向屬性添加驗證屬性時,您遇到了一個異常,指出「集合是固定的尺寸。 「要解決此問題,請考慮以下事項:
您提供的程式碼涉及呼叫FillAttributes 方法。然而,這個特定的方法需要一個屬性陣列作為其參數,而不是單一屬性。要修正此問題,您應該修改程式碼以傳遞包含所需屬性的陣列:
// Create an array of attributes var attributes = new ValidationAttribute[] { attribute }; // Invoke FillAttribute method methodInfo.Invoke(propDesc, new object[] { attributes });
或者,您可以完全繞過FillAttributes 方法,直接將屬性指派給屬性描述符:
// Assign attribute to property descriptor propDesc.Attributes = new Attribute[] { new RequiredAttribute() };
根據特定場景和您的設計偏好,這些方法的組合應該允許您在運行時向屬性添加屬性,而不會遇到「Collection was固定大小」例外。
以上是如何在 C# 中向運行時屬性新增驗證屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!