在尝试在运行时向属性添加验证属性时,您遇到了一个异常,指出“集合是固定的尺寸。”要解决此问题,请考虑以下事项:
您提供的代码涉及调用 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中文网其他相关文章!