用于跟踪数据的内部C#“数据库”

时间:2009-08-25 09:25:47

标签: c# oop

我正在开发一个C#项目,它要求我跟踪我定义的各种类对象...例如,class1,class2等。这些类中的每一个都有一个被定义为Guid的id

我目前跟踪我创建的所有这些对象的方法是将它们存储到Hashtable中。以下是我正在做的事情的样本。

Hashtable c1_db = new Hashtable();
Hashtable c2_db = new Hashtable();

// class 1
Class1 c1_1 = new Class1(..);
Class1 c1_2 = new Class1(..);

// add class1 objects to database
c1_db.Add(c1_1.id, c1_1);
c1_db.Add(c1_2.id, c1_2);

// class 2
Class2 c2   = new Class2(..);
c2_db.Add(c2.id, c2);

所以,基本上我使用每个Guid作为Hashtable键,以便稍后在我需要检索我的对象时进行查找。

我的问题是关于我在这里的实现......这是处理多个对象的好方法吗?我是C#/ OOP的新手,所以我确信有更好的方法可以做到这一点......但这似乎是一种快速/简单/快速的方式来管理内部数据。

3 个答案:

答案 0 :(得分:3)

根据我的经验,这种方法没有任何内在错误。我过去也用过它。但是你可能想要使用Dictionary<TKey, TValue>,因为在这种情况下类型安全。使处理比非通用哈希表更容易。

答案 1 :(得分:2)

此代码没有任何问题。问题是它应该解决什么问题。如果你解释实际应该实现什么,你只能谈论好/坏的解决方案。

答案 2 :(得分:1)

与约翰内斯·罗塞尔(JohannesRössel)达成一致,使用哈希表是一个好主意,但如果能够使其类型安全,那就更好了。

使用的起始策略如下:

由于您要跟踪的每个对象都包含GUID,因此创建一个基类或接口类,其成员GUID为类成员,这将允许您创建

Dictionary<GUID, iTrackedClass> 

没有任何问题。

我经常使用的其他东西,就是将字典本身传递给对象的构造函数,并在对象中自动将对象添加到字典中,以保持代码的封装。如果您不希望将代码添加到列表中,只需发送一个null并检入构造函数。