首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用继承树创建视图模型

利用继承树创建视图模型
EN

Software Engineering用户
提问于 2017-07-26 10:56:49
回答 1查看 410关注 0票数 0

我有一个域接口ITransformation,它有几个实现类,比如RemoveRowsTransformationAddColumnTransformation。继承树对命令模式进行建模。ITransformation接口定义了一个Execute(table)。每个实现类包含实现方法所需的不同属性。例如:

代码语言:javascript
复制
public class RemoveRowsTransformation : ITranformation {
    public int TopRowsCount { get; private set; }
    public int BottomRowsCount { get; private set; }
    //snip
}

public class AddColumnTransformation : ITranformation {
    public string ColumnName { get; private set; }
    //snip
}

各种域方法都需要或创建一个IEnumerable<ITransformation>。此枚举必须在视图中显示(特别是以JSON形式通过web发送)以供查看和编辑。如何最有效地在视图或其他地方显示可枚举的转换(继承树)中的数据?

目前,每个具体的转换都在创建一个视图模型。这并不适合我,因为这样域就被绑定到视图层了。此外,如果需要不同的视图或使用不同的模型将数据保存到数据库中,则必须为每个转换创建域中的特定方法。

我使用过的另一种方法是创建一个特定模型将继承的接口,并填充这些接口。这看起来更干净,但仍然会导致大量无法管理的IDomainClassModel和实现,以满足每一件可以想象的事情。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2017-07-26 20:34:07

如果您在视图中插入一个字典,将具体类型的ITransformation映射到适当的转换视图,该怎么办?您可以迭代您的IEnumerable<ITransformation>,调用每个GetType(),并使用字典实例化每个视图。

这种做法有若干好处:

  • 域不耦合到表示层
  • 对于ITransformation的多个具体实现,可以选择重用相同的视图,而无需重复代码或杂乱的设计。
  • 可以根据上下文指定不同的字典(编辑vs视图、摘要视图、详细视图、焦点视图等)
票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/354500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档