ServiceStack - расширение средства просмотра метаданных AutoQuery

Плагин AutoQuery Viewer от ServiceStack позволяет декорировать AutoQueries, используя атрибуты метаданных AutoQuery. Я использую существующую службу метаданных в AutoQuery для включения внешнего интерфейса и отображения поисковых запросов (аналогично существующей функции администратора AutoQuery)

Как можно расширить / добавить дополнительные свойства для AutoQueryViewerAttribute, чтобы они были доступны в службе метаданных Autoquery?

Текущий список доступных атрибутов AutoQuery:

public class AutoQueryViewerAttribute : AttributeBase
{
    public string Title { get; set; }

    public string Description { get; set; }

    public string IconUrl { get; set; }

    public string BrandUrl { get; set; }

    public string BrandImageUrl { get; set; }

    public string TextColor { get; set; }

    public string LinkColor { get; set; }

    public string BackgroundColor { get; set; }

    public string BackgroundImageUrl { get; set; }

    public string DefaultSearchField { get; set; }

    public string DefaultSearchType { get; set; }

    public string DefaultSearchText { get; set; }

    public string DefaultFields { get; set; }
}

Я хотел бы расширить список атрибутов AutoQueryViewerAttribute и добавить два дополнительных свойства:

public string SourceDescription { get; set; }

public string SourceApplicationName { get; set; }

1 ответ

Решение

Вы не можете продлить [AutoQueryViewer] атрибут, который жестко закодирован. Информация об атрибуте используется для заполнения Typed AutoQueryMetadataResponse DTO, который является сериализованным для предоставления сервисов метаданных AutoQuery. Я только что добавил словари Meta String на MetadataType, AutoQueryViewerConfig, AutoQueryViewerUserInfo, AutoQueryOperation а также AutoQueryMetadataResponse DTO в этом коммите, чтобы вы могли присоединять дополнительные метаданные к DTO метаданных AutoQuery, используя MetadataFilter Например:

Plugins.Add(new AutoQueryMetadataFeature {
    MetadataFilter = response => {
        response.Meta = new Dictionary<string,string> {
           { "SourceApplicationName", "My App" },
           { "SourceDescription", "My App Description" },
        };
    }
});

Это изменение доступно с версии 4.5.13, которая теперь доступна на MyGet.

Другие вопросы по тегам