1

我想知道是否有任何用于创建对象图的模板引擎?有许多创建 HTML 或其他字符串结果的内容。但我想要一个吐出对象的模板引擎。可以说是预处理器。

我有一个应用程序需要某种预定义的对象图,用于呈现特定的页面小部件。例如,我的页面上有一个工具栏,但每个页面都有不同的工具栏。它可能看起来非常相似。但例如按钮 Add 将指向一个页面上的不同 URL,而不是另一个页面。

示例对象图(部分):

IList<ToolbarItem> toolbar = new List<ToolbarItem> {
    new ToolbarButton {
        Text = PageResources.NewText,
        Url = Url.Action("Add", "Items"),
        Icon = ToolbarIconType.New
    },
    new ToolbarSeparator(),
    new ToolbarDropDown {
        Text = PageResources.DropDownText,
        Icon = ToolbarIconType.Filter,
        Items = new List<ToolbarDropDownItem> {
            new ToolbarDropDownItem {
                Text = PageResources.FirstItem,
                Url = Url.Action("Whatever", "Filter")
            },
            new ToolbarDropDownItem {
                Text = PageResources.SecondItem,
                Url = Url.Action("BlahBlah", "Filter"),
                Icon = ToolbarIconType.Search
            },
            ...
        }
    },
    ...
};

这个静态定义(带有动态资源和动态 URL 助手调用)可能会变得非常冗长和复杂。想一想类似于 Word 的类似功能区的工具栏。很复杂很长。

我希望将这些对象生成模板存储在数据库中,并且每个页面都可以读取它们自己的内容,然后模板引擎将生成它并使用特定的资源类型 + 键来放入本地化数据。同样的事情也适用于操作' 网址...

在对象反序列化(XML 或 JSON)中进行了类似的操作。但内置(反)序列化技术不支持变量替换或资源链接或类似的。最好的办法是支持资源链接和 lambda 表达式。

总结一下:是否有任何 .net 对象图模板引擎/预处理器可以提供我需要的东西?

4

2 回答 2

1

这是一个非常有趣的问题。

我认为一种选择是生成 XAML,然后使用XamlReader.Load参见 MSDN)加载 XAML 描述的对象树(或图形)。请注意,XAML 可用于构造任何符合一些基本要求的 .NET 对象(例如,如果它们应该可用作集合,则具有公共 get/set 属性并实现一些接口)。

此外,XAML 是一个 XML 文档,因此应该可以使用可以生成 XML 文件的标准文本模板引擎来生成 XAML 文档。

于 2010-11-25T21:42:34.853 回答
0

JSON序列化

我决定使用 Json.Net 库主要是因为编写 JSON 字符串非常易于阅读,或者我应该说Web 开发人员可读且易于维护。它与普通的 Javascript JSON 非常相似,但具有额外的语法糖(引用保存、类型保存等)

JavaScriptSerializerJson.NET 库是对提供的或类的一个很好的升级DataContractSerializer

于 2010-11-29T17:45:02.037 回答