実行時にプロパティに検証属性を追加しようとすると、「コレクションは修正されました」という例外が発生しました。サイズ。"この問題を解決するには、次の点を考慮してください。
指定したコードには、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() };
特定のシナリオと設計設定に応じて、これらのアプローチを組み合わせることで、実行時にプロパティに属性を追加できるようになります。 「コレクションは固定サイズでした」例外が発生しました。
以上がC# のランタイム プロパティに検証属性を追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。