编辑:好的,把这个放在一个问题中,我要问可能的方法我应该把它组织成类以及我应该使用哪些数据结构来存储来自事务的信息。目前,我有这个:(http://dl.dropbox.com/u/9210234/classes.jpg) - 甚至没有接近我想要的,这正是我正在做的事情。它目前将报表数据作为字符串存储在字典对象中。我需要能够轻松地提取这些信息,通过搜索字段和类似的东西来查找交易,我很确定我目前的方式不会那么容易。
我想创建一个易于使用的c#库来使用Payflow报告API。有完整的指南here。这非常好,可以轻松获取有关我公司已处理的过去信用卡交易的信息。我已经使用它了,所以实际使用它不是问题。我现在可以将一个应用程序组合在一起,该应用程序可以完成目前所需的操作,或者我可以设计一些实际上很好的东西,并且可以在我可能制作的各种程序中使用。目前,我一直在写下他们的想法,然后使用适当的方法创建类来简化对API的调用,然后感受到所需的所有可能功能。一旦我得到一个原型工作,我打算回去完全设计它,然后继续创建它。
问题:我没有高级程序员可以依赖,而且我仍然要经历大学学习设计模式,数据结构和编程。我对一些概念有所了解,但我对一些设计模式的基本了解不多。我不知道如何尝试组织这个或先做什么。我在这里寻求帮助的最好方法是让你知道我正在做什么,然后听取有关要研究的内容的建议,使用哪些数据结构等。真的,我正在寻找的是关于如何更好地设计这个的任何建议,因为我不知道我应该在这一点上使用什么。这篇文章的其余部分解释了我到目前为止所做的工作,让您了解我一直在做什么以及我正在寻找这个应用程序要做什么。
我已经创建了一个测试应用程序来处理和测试类。这是迄今为止的课程图片:(http://dl.dropbox.com/u/9210234/classes.jpg)。是的,这是一团糟。所有代码都在表单文档中,没有接口或任何东西。 ReportWrapper类根据参数(例如日期范围,报告类型等)生成XML请求。另一个名为BaseCall的类接受请求XML并实际将其发送到API并返回响应。 ReportMetaData解析来自报告元数据请求的响应,并使用有用信息(如数据页数)填充属性。 XmlUtility只是一个辅助类,可以查找单个节点值或将具有唯一属性的数据行转换为键/值字典。这就是现在存储在ReportStorage中的内容 - 一个包含报告实际数据的字典。然后使用metaData来自动确定报告数据中的字段。我上面链接的Payflow指南的第36页显示了数据响应的样子。
请求数据页后,这些行作为XML字符串存储在reportStore中。然后,XmlToAssoc获取xml字符串,标记名称,该标记的属性名称(由API用作唯一ID),以及可选的子节点名称。它返回一个字典,其中属性值为键,innerXml为值。然后,我可以通过将元数据与字段数据交叉引用来获取有关单个事务的信息,以获得事务的完整画面。此外,还有一个带有字段名称的dataType,稍后我将使用它。
因此,对于每个报告数据行,我需要存储字段名称,字段类型和值。它看起来像这样:
reportData
reportDataRow 1:
fieldData 1:
{"Transaction ID", "string", "VLFA6D1CE4A6"}
fieldData 2:
{"Time","date","2010-12-19 00:21:41"}
[...]
reportDataRow 2:
fieldData 1:
{"Transaction ID", "string", "VLFA6D33554C"}
fieldData 2:
{"Time","date","2010-12-19 08:02:57"}
fieldData 3:
[...]
reportDataRow 3:
[...]
一旦我找到了存储空间,我就可以继续进行其他操作,例如排序,使用字段标题将数据输出到excel等。
答案 0 :(得分:2)
你显然熟悉对象,所以我能给你的最好建议就是找到面向对象的原则。 S.O.L.I.D原则是一个很好的起点,你可以找到一些非常好的文章。
Here是众多开始之一。谷歌搜索面向对象的设计原则也可能会帮助你。