런타임에 속성에 속성을 추가하면 개체를 유연하게 구성하고 검증할 수 있습니다. 그러나 특정 접근 방식을 사용할 때 "컬렉션이 고정된 크기였습니다" 예외가 발생할 수 있습니다.
예외의 출처
이 오류는 컬렉션을 수정하려고 할 때 발생합니다. 일반적으로 고정 크기 배열로 정의되는 속성 설명자의 내장 속성 컬렉션입니다. 이 컬렉션을 직접 수정하면 예외가 발생할 수 있습니다.
해결 방법
이 문제를 방지하려면 기존 속성 컬렉션을 수정하는 대신 새 속성 컬렉션을 동적으로 생성할 수 있습니다. 코드의 수정된 버전은 다음과 같습니다.
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을 생성합니다. PropertyDescriptor에서 이 새 컬렉션을 설정하면 속성에 동적으로 속성을 추가할 수 있습니다.
추가 고려 사항
이러한 지침을 따르면 런타임 시 속성에 속성을 성공적으로 추가하고 코드의 유연성을 높일 수 있습니다.
위 내용은 '컬렉션이 고정된 크기였습니다' 예외 없이 C#에서 속성에 동적으로 특성을 추가하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!