У меня есть четыре пользовательских типа данных, каждый из которых расширяет ITableEntity
, который является частью пакета WindowsAzure.Storage
.
Сейчас у меня есть четыре различных способа загрузки данных из хранилища таблиц Azure.Каждый из них имеет следующий формат:
public List<MyCustomEntity> DownloadMyCustomEntities(string tableId)
{
// Reference the CloudTable object
CloudTable table = tableClient.GetTableReference(tableId);
TableQuery<MyCustomEntity> query = new TableQuery<MyCustomEntity>();
return new List<MyCustomEntity>(table.ExecuteQuery(query));
}
Вместо того, чтобы использовать один из этих методов для каждого из моих пользовательских типов сущностей, я пытаюсь создать одну общую функцию.Я надеюсь, что это возможно, так как все мои пользовательские типы наследуются от ITableEntity
.
Вот что я попробовал:
public List<TableEntity> DownloadAnyEntity(string tableId)
{
// Reference the CloudTable object
CloudTable table = tableClient.GetTableReference(tableId);
TableQuery<TableEntity> query = new TableQuery<TableEntity>();
return new List<TableEntity>(table.ExecuteQuery(query));
}
Я пробовал это с TableEntity
и ITableEntity
, но я продолжаю получать ошибки.Для TableEntity
моя ошибка в том, что не существует приведение к тому типу, который мне действительно нужен (когда я вызываю метод DownloadAnyEntity
), тогда как я чувствую, что это должно быть неявным, так как это расширение ITableEntity
.
Для ITableEntity
я получаю ошибку, что ExecuteQuery
ввод должен быть неабстрактного типа с открытым конструктором без параметров.Все мои четыре пользовательских типа имеют открытые конструкторы без параметров.
Мне кажется, что проблема, которую я вижу, связана не с полным пониманием наследования, а с тем, что оно зависит от хранилища таблиц Azure.Любые указатели высоко ценится.
Я в основном следовал этой документации , но нет примера для способа загрузки сущностей, не зависящих от типа.