2010-06-21 62 views
1

我有一流的汽车,每类有额外的列表(皮革,ABS,折叠后视镜等)对象建模问题

public Extra 
{ 
public bool Paid {get;set;} 
public string Name {get;set;} 
public string Code {get;set;} 
} 

而现在,更好的是:

class Car 
{ 
public Extra Leather {get;set;} 
public Extra FoldingMirrors {get;set;} 
public Extra Abs {get;set;} 
} 

或更好:

class Car 
{ 
private List<Extra> _listOfExtras=new List<Extra> 

public List<Extra> ListOfExtras 
{ 
... 
} 
} 

而最糟糕的:

我的winforms应用程序离线工作,每个月有一个为我发送数据。

我必须在此应用程序中列出可用的(foreach汽车用户选择附加件)附加组件,因此我认为这是更好的选择。

如何在我的应用程序中拥有这个附加列表?它每个月只连接一次web服务。

+0

你能解决一些拼写问题,并描述你最后关于保存更多细节的要求吗? – Restuta 2010-06-21 11:20:32

+0

@Restuta - 也许现在:) – user278618 2010-06-21 11:26:22

回答

1

附加组件的列表或字典(用于更容易访问)会更加灵活。

这将意味着,作为额外添加和/或从汽车中删除,您不必修改Car类,如果每个都明确添加,您将不得不做。

本地存储列表有多种方式。你可以序列化为一个文件 - 无论是纯文本还是XML,这会更好,因为你有为你做序列化的类,或者你可以把它保存在本地数据库中。

+0

好吧,但如何在我的应用程序中保存这个附加列表?它每月只与webservice连接一次 – user278618 2010-06-21 11:24:10

+1

@phenevo - 本地存储列表有多种方式。你可以序列化为一个文件 - 纯文本或更好的XML,或者你可以将它保存在本地数据库中。 – ChrisF 2010-06-21 11:41:33

2

个人(看到这是主观的),我会使用额外的接口(例如IExtra)。我还会选择第二个“选项”,在Car类中包含额外的列表/字典。

如果需要,可以像在选项1中那样暴露它们,只需查找列表/字典中的值即可。

+0

好的,但是如何在我的应用程序中保存这些附加列表?它每个月只连接一次web服务 – user278618 2010-06-21 11:23:39

1

我会将它存储在Dictionary<string, Extra>。你不希望同样的演员多出现一次......或者至少为他们支付多次:-)

另外,Extra应该是一个接口(或者至少是一个抽象类)。

至于存储,您可以将Car类序列化为XML。