【发布时间】:2013-06-16 06:42:52
【问题描述】:
我已经这样定义了我的扩展类:
public class ExtendedAttributeMetadata : AttributeMetadata
{
public bool IsTwoOption { get; set; }
}
但是在将AttributeMetadata[] 类型的源数组复制到我的新目标数组ExtendedAttributeMetadata[] 后,我得到InvalidCastException:
“源数组中的至少一个元素无法转换为目标数组类型。”
代码:
AttributeMetadata[] attributes;
//...
ExtendedAttributeMetadata[] extendedAttributes = new ExtendedAttributeMetadata[attributes.Length];
attributes.CopyTo(extendedAttributes, 0);
添加:
其中AttributeMetadata 派生自元数据库
public class AttributeMetadata : MetadataBase
而MetadataBase 是一个抽象类。
public abstract class MetadataBase : IExtensibleDataObject
请就我的情况提出最佳和最佳的复制方式。
【问题讨论】:
-
原始数组从何而来?似乎很清楚,原始数组的至少一个元素不是
ExtendedAttribute类型。 -
原始数组是 Attribute[] 类型,我从中扩展了我的类。
-
您的编辑不会改变任何内容:您正试图将
ExtendedAttributeMetadata类型的非 对象复制到ExtendedAttributeMetadata类型的数组中。这是不可能的。