C#使用静态类创建类的集合或使用集合类

C#使用静态类创建类的集合或使用集合类,c#,class,collections,static,C#,Class,Collections,Static,我有一个设计问题 基本上,我有一个叫做Currency public class Currency { public int ID; public string Name; public int RoundingValue; public Currency() { } public void GetData() { // Some SQL query code // } } 有时有必要提取系统中的所有货币,以决定汇率、支付的兼容性等 我看

我有一个设计问题

基本上,我有一个叫做
Currency

public class Currency
{ 
     public int ID;
     public string Name;
     public int RoundingValue;

     public Currency() { }

     public void GetData() { // Some SQL query code // }
}
有时有必要提取系统中的所有货币,以决定汇率、支付的兼容性等

我看到了两种方法(获取数据):

1) 在
Currency
类中创建一个静态方法。这涉及到在其内部创建SQL连接实例(不确定这样做是否正确),创建
List
实例来存储集合,然后将其传递到类外部

2) 通过扩展
Collections.BaseCollection
类创建类的集合,创建它的实例,执行相同的SQL查询,然后返回结果。但该类不会提供任何附加功能,而且可能永远也不会(对于
Currency
本身也是如此)

在其他情况下,我使用扩展集合,因为它们需要根据集合的内容存储额外的信息

但在这种情况下,不会创建其他信息或提供其他功能

那么,什么样的设计更实用呢?
如果有一个替代方案可以替代这些解决方案,我会非常高兴听到它。

我建议只需填充一个
列表
,然后将其返回为
IList
。这样,如果您将来将其更改为使用自定义集合,您就不会破坏任何消费者。

您是否考虑过使用一个货币变化很大,只是它代表的金额。通过这种方式,您可以执行Currency.GetEuro()和/或Currency.GetUSD()等等。@Marvinbrower不使用工厂模式的原因是,事先不知道系统中存在哪些货币。@gcores数据库详细信息,其中数据主要由第三方SPs控制。似乎无法遵循。您能详细说明吗?