【问题标题】:WPF dynamic data architectureWPF 动态数据架构
【发布时间】:2010-03-05 03:48:24
【问题描述】:

因此,我在使用一些动态数据元素构建特定解决方案时遇到了一定程度的困难......

所以我有两个地方存储数据——一个数据库和一个 pdf(虽然我只写到 pdf - 我从来没有读过它)。您可以认为 pdf 工作起来很像数据库——除了表和 pdf 的架构不同。不同的字段将进入数据库和pdf。用户将能够编辑某些字段——但不是所有字段。我正在努力在这里强制分离 UI 和逻辑,但我遇到了困难。我的逻辑本质上是必须告诉我的 UI 要创建哪些 UI 元素以及对它们强制执行哪些限制(必需、选项等),所以我感觉有点像是在我的业务逻辑中制作 UI;但我真的不知道如何使用动态数据元素来做到这一点。完成后,我必须写入数据库,然后打印 pdf。

你基本上可以把这个问题想象成......“我有大量不同的数据。我需要用不同的数据做不同的事情。如果不做一些事情,我无法找到一种通用的方法来做到这一点编码暴行。”有人有什么想法吗?

【问题讨论】:

  • 看到您正在使用 WPF,我假设您已经在使用 C# 3 和 .NET 3.5。你也在使用 MS-SQL Server 吗?

标签: c# wpf architecture


【解决方案1】:

您正在做的是开发应用程序框架,而不是应用程序。看看其他应用程序框架(有十亿个),看看其他人是如何解决这个问题的,您可能会从中受益。

我现在可以告诉您,您的项目是否成功与您设计用于处理元信息的方案的好坏成正比。 Steve McConnell 的一般规则是数据比代码更容易调试,这几乎是此类项目的指导灯塔。

WPF 非常非常适合这种事情。我一直在将自己的应用程序框架从 Windows 窗体移植到 WPF,并且对我不必编写多少代码感到惊讶。

【讨论】:

  • 对某些数据位可能发生什么应用一些规则是可以的,与演示无关;是的,您需要某种形式的演示文稿 - 但期望逻辑层规定这些规则是合理的。
【解决方案2】:

如果我是你,我会查看用户需要查看/编辑的所有字段信息,看看我能看到哪些常见主题。查看您的问题,我可能会创建一个包含以下内容的类/结构:

struct FieldInfo
{
    string FieldName;
    string DisplayName;
    string DataType;
    bool Required;
    delegate Validator;
    string OldValue;
}

delegate bool Validator(string input, out string message);

我会从业务逻辑返回 FieldInfo[],然后在 UI 中使用该数组来确定向用户显示什么。这样,即使验证登录也是您的业务逻辑(使用委托),UI 只需决定为每种类型显示哪些元素。你甚至可以更进一步,让 FieldInfo 结构有一个元素名称,告诉 UI 用于该字段的元素(文本框、DDL 等)

【讨论】:

  • 这几乎就是我一直在做的;它看起来有点像黑客。不过,谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-06-06
  • 2011-08-15
  • 2011-04-11
  • 2018-03-16
  • 2011-08-24
  • 2018-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多