1

我以这种方式定义了我的扩展类:

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

请就我的情况提出最佳和最佳的复制方式。

4

2 回答 2

1

您无法将基类复制到派生类,因此您必须生成它:

var extendedAttributes = 
   attributes.Select(p=>new ExtendedAttribute{IsTwoOption=true/false}).ToArray();
于 2013-06-16T06:59:03.033 回答
0

属性列表只是AttributeMetadata抽象基类吗?

您收到该错误是因为列表中有非类型的属性ExtendedAttributeMetadata

您可以使用 linq 语句过滤掉这些:

var extendedAttributes = attributes.OfType<ExtendedAttributeMetadata>().ToArray();
于 2013-06-16T07:20:00.217 回答