我已经用这种方式定义了我的扩展类:
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
派生自MetadataBase
public class AttributeMetadata : MetadataBase
MetadataBase
是一个抽象类。
public abstract class MetadataBase : IExtensibleDataObject
请在我的案例中建议最佳和最佳的复制方式。
答案 0 :(得分:1)
您无法将基类复制到派生类,因此您必须生成它:
var extendedAttributes =
attributes.Select(p=>new ExtendedAttribute{IsTwoOption=true/false}).ToArray();
答案 1 :(得分:0)
属性列表是AttributeMetadata
抽象基类吗?
您收到该错误,因为列表中的属性不属于ExtendedAttributeMetadata
您可以使用linq语句过滤掉这些内容:
var extendedAttributes = attributes.OfType<ExtendedAttributeMetadata>().ToArray();