gpt4 book ai didi

c# - 类型 'MyClass' 无法从未标记为 DataContractAttribute 或 SerializableAttribute 的类型继承。考虑标记基本类型

转载 作者:太空宇宙 更新时间:2023-11-03 13:36:46 24 4
gpt4 key购买 nike

当我尝试序列化从 TableEntity 派生的实体时收到此错误消息:

Type 'MyClass' cannot inherit from a type that is not marked with DataContractAttribute or SerializableAttribute. Consider marking the base type 'Microsoft.WindowsAzure.Storage.Table.TableEntity' with DataContractAttribute or SerializableAttribute, or removing them from the derived type.

错误消息非常清楚地说明出了什么问题。

所以我的问题是,如何解决 DataContractAttribute 未在 TableEntity 类中被装饰的问题?

代码:

[DataContract]
public class MyClass : MyOwnTableEntity
{
[DataMember]
public string Name { get; set; }

[DataMember]
public string Email { get; set; }
}

我需要将 MyClass 序列化为 byte[] 并将其保存到表存储中。

public class MyClassAsByteArray : MyOwnTableEntity 
{
public byte[] SomeByteArray { get; set; }
}

如果有人对如何将其序列化为 byte[] 有建议,请告诉我。

[编辑]

我决定创建自己的可序列化TableEntity:

[DataContract]
public class MyOwnTableEntity : ITableEntity
{
private TableEntity te = new TableEntity();

public MyOwnTableEntity ()
{
}

public MyOwnTableEntity (string partitionKey, string rowKey)
{
this.PartitionKey = partitionKey;
this.RowKey = rowKey;
}

public string PartitionKey { get; set; }

public string RowKey { get; set; }

public DateTimeOffset Timestamp { get; set; }

public string ETag { get; set; }

public virtual void ReadEntity(IDictionary<string, EntityProperty> properties, OperationContext operationContext)
{
te.ReadEntity(properties, operationContext);
}

public virtual IDictionary<string, EntityProperty> WriteEntity(OperationContext operationContext)
{
return te.WriteEntity(operationContext);
}
}

然后我派生自这个类,但是它无法将 MyClassMyClassAsByteArray 的属性写入存储表。那是因为我创建了一个 TableEntity 的新对象。

如何将 MyOwnTableEntity 中传递给 ReadEntityWriteEntity 的参数转发给 ReadEntity实际 TableEntity 类中的 WriteEntity 方法?

Microsoft 已经编写了代码,所以我不想在这里重新发明轮子。

编辑参见 TableEntity.cs

最佳答案

回到 MSSQL 并放弃 Azure 表存储作为解决方案。只是因为它有太多的限制。

关于c# - 类型 'MyClass' 无法从未标记为 DataContractAttribute 或 SerializableAttribute 的类型继承。考虑标记基本类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18446246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com