我读到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)
。