我们正在从头开始编写应用程序(核心和应用程序,应用程序是MVVM)。核心包含一个由块组成的Test对象。我们有大约30种不同的块。它们被实现为一个复合模式 - 我们有一个抽象块,叶子和从中继承的复合块。所有其他类型的块都从叶子(如'print'块)或复合(如'for'块)继承。
我的问题是关于连接核心应用程序:应用程序需要呈现测试的树状结构。为此,它应该知道块具有什么参数以及如何呈现它们(它可以是1个字符串参数,3个int,1个字符串和1个int,只能有3个值等),以及块是否有子节点。其他一些要求可能会在以后出现。
在API中公开我们所有的具体块似乎最简单,将每个块包装在模型中的自己的块中,然后使用数据模板将不同的属性绑定到字段。问题是,我们不希望以这种方式将我们的核心内部暴露给应用程序。
另一种选择是只公开抽象块并向API添加一个实体 - 可呈现的块,它将保存它并且还保存其参数的一般表示(比如说,参数对象的列表,每个这样的对象都成立)所需的信息)。在这种情况下,应用程序将不得不为每个块解析这样的列表,我们不确定数据模板的使用 - 它甚至可能吗?
我将非常感谢您对2条建议以及当然新想法的评论 感谢。