【问题标题】:C# to use static class to create collection of the class or to use collection classC# 使用静态类创建类的集合或使用集合类
【发布时间】:2014-01-23 15:59:55
【问题描述】:

我有一个设计问题,

基本上,我有一个名为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<Currency> 实例来存储集合,然后将其传递到类之外。

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

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

但在这种情况下,不会创建任何附加信息或提供任何功能。

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

【问题讨论】:

  • 您是否考虑过使用factory design pattern。我认为货币的类型变化不大,只有它所代​​表的金额。这样你就可以做 Currency.GetEuro() 和/或 Currency.GetUSD() 等等。
  • @MarvinBrouwer 不使用工厂模式的原因是,事先不知道系统中存在哪些货币。
  • @gcores 数据库细节,其中数据主要通过 3rd 方 SP 控制。

标签: c# class collections static


【解决方案1】:

我建议简单地填充一个List<Currency>,然后将其返回为IList<Currency>。这样,如果您将来将其更改为使用自定义集合,则不会破坏任何消费者。

【讨论】:

  • 似乎跟不上。能详细点吗?
猜你喜欢
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
  • 2011-04-01
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
相关资源
最近更新 更多