假设您需要在由几列(如关系数据库)形成的表格中存储一些值:例如,第一列为int
,第二列为string
,第三列为DateTime
等。如何实现一个表格?
如果一列或多列与主键相似,那么我们可以使用IDictionary
,其中Key
将是充当主键的字段集合。其余的字段代表Value
。在这种情况下,我可以创建一个或两个类/结构。例如,如果主键是一个简单的现有类型,我们只需要创建一个类/结构如下所示:
public class MyValue
{
public int Field1;
public double Field2;
public string Field3;
}
字典可能是一个Dictionary<int, MyValue>
,而表可以是以下。
public class MyTable
{
private Dictionary<int, MyValue> _table;
...
}
显然,根据本申请的域可能存在用于上述领域范围和/或有效性的规则:例如,Field1
可能必须为正,等等...
作为我可以设计MyValue
类的第一个选择,以便引发一些例外,以识别“违反规则”。但也许这种方法可能会过度,特别是如果MyValue
类只在内部使用到MyTable
:在这种情况下,我将编写类似以下的代码并在MyTable
类中处理有效性错误:即MyTable
类在插入它们之前检查数据字段进入字典,所以MyValue
将是一个“愚蠢的”类...
namespace MyNamespace
{
class MyValue
{
// only public fields
}
public class MyTable
{
private Dictionary<int, MyValue> _table;
...
public void Add(int key, int field1, double field2, string field3)
{
// some code to check validity range for fields
...
}
}
}
是这个解决方案是否正确?或者我应该避免这种方法?我应该总是以完整地定义一个类/结构(例外处理,Equals
,GetHashCode
方法?
这是如此令人难以置信的广泛我甚至不知道从哪里开始。 – cadrell0 2012-02-17 21:45:31
是的,这是有效的解决方案。 – 2012-02-17 21:46:30
你有没有关于.NET的一些设计准则(关于这个问题)的一些链接? – enzom83 2012-02-17 23:16:40