ServiceStack - 扩展AutoQuery元数据查看器

时间:2017-06-19 08:27:48

标签: servicestack servicestack-autoquery

ServiceStack的AutoQuery Viewer Plugin允许您使用AutoQuery元数据属性修饰AutoQueries。我使用AutoQuery中的现有元数据服务来为前端提供动力并显示搜索查询(类似于现有的AutoQuery Admin功能)

如何向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 个答案:

答案 0 :(得分:1)

您无法扩展硬编码的[AutoQueryViewer]属性。属性上的信息用于填充Typed AutoQueryMetadataResponse DTO,这是序列化的,以提供AutoQuery元数据服务。我刚刚在this commitMetadataTypeAutoQueryViewerConfigAutoQueryViewerUserInfoAutoQueryOperationAutoQueryMetadataResponse DTO添加了Meta String Dictionaries,所以你可以使用MetadataFilter将其他元数据附加到AutoQuery元数据DTO,例如:

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

此更改可从 v4.5.13 获得,现在为available on MyGet