使用 TableEntity 模拟多重继承



我读到c#中不存在多重继承,但可以通过使用接口来模拟

我正在尝试做类似的事情,但它似乎不起作用。想知道我可能做错了什么。我已经定义了要继承的具体类:

public class AppSettings {
public string CosmosDbPrimaryKey {get; set;}
}

然后我的"超"类直接从AppSettings继承并实现ITableEntity.此类最终应像继承自 AppSettings 和 TableEntity 一样。

public class AppSettingsRow: AppSettings, ITableEntity
{
private readonly TableEntity _tableEntity;
public AppSettingsRow()
{
_tableEntity = new TableEntity();
}
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public DateTimeOffset Timestamp { get; set; }
public string ETag { get; set; }
public void ReadEntity(IDictionary<string, EntityProperty> properties, OperationContext operationContext)
{
_tableEntity.ReadEntity(properties, operationContext);
}
public IDictionary<string, EntityProperty> WriteEntity(OperationContext operationContext)
{
return _tableEntity.WriteEntity(operationContext);
}
}

问题是,当我实际使用表中的类和列表行时,AppSettings 字段显示为 null。

如果我做相反的事情并直接从 TableEntity 继承并实现应用程序设置,它工作得很好,但这对我来说是不可取的。AppSettings 可能会随着时间的推移而变化,我不想每次发生更改时都必须维护两个单独的模型。

我做错了什么?

>TableEntity的实现使用反射来枚举具体类型的可序列化属性。在这种情况下,您根本不需要从TableEntity继承,只需实现自己的序列化即可。请考虑在ReadEntity方法中调用TableEntity.ReadUserObject(this, properties, operationContext)

相关内容

  • 没有找到相关文章

最新更新