나는 나의 확장 한 클래스 이런 식으로 정의 :배열을 확장 배열에 복사하는 방법은 무엇입니까?
public class ExtendedAttributeMetadata : AttributeMetadata
{
public bool IsTwoOption { get; set; }
}
을하지만 내 새로운 대상 배열 ExtendedAttributeMetadata[]
에 유형 AttributeMetadata[]
의 소스 배열을 복사 할 때, 나는 InvalidCastException
무엇입니까 :
"적어도 하나 원본 배열의 요소를 대상 배열 유형으로 캐스트 할 수 없습니다. "
코드 :
AttributeMetadata[] attributes;
//...
ExtendedAttributeMetadata[] extendedAttributes = new ExtendedAttributeMetadata[attributes.Length];
attributes.CopyTo(extendedAttributes, 0);
ADDED : AttributeMetadata
이
public class AttributeMetadata : MetadataBase
그리고 MetadataBase
MetadataBase
는 추상 클래스입니다.
public abstract class MetadataBase : IExtensibleDataObject
필자의 경우 최상의 복사 방법을 제안하십시오. 속성 단지 AttributeMetadata
추상 기본 클래스의 목록이
var extendedAttributes =
attributes.Select(p=>new ExtendedAttribute{IsTwoOption=true/false}).ToArray();
원래의 배열에서 왔는가? 원래 배열의 요소 중 적어도 하나가'ExtendedAttribute' 유형이 아니라는 것은 꽤 분명합니다. – dlev
원래 배열은 Attribute [] 타입이며 클래스를 확장했습니다. –
편집 내용이 변경되지 않습니다. * ExtendedAttributeMetadata 유형이 아닌 * 객체를 'ExtendedAttributeMetadata' 유형의 배열에 복사하려고합니다. 그것은 단지 불가능합니다. – dlev