我正在编写一个用棒球统计数据做一些事情的C#应用程序。我从XML Web服务获取数据。我想完全分离演示文稿 - 业务数据层。我徒劳地创建了一个服务类来与Web服务交互,并从数据创建对象,一组业务类(即播放器,团队,联盟)以及我的表示层所需的对象。
我不想将统计信息加载到播放器类中,因为有超过200个统计信息,而且每次实例化播放器类时我都不需要它们。对于每个统计信息,我需要它的缩写,描述,XML属性名称和值。
问题:可以使用哪些C#数据结构或方法来呈现两个以上的属性,并允许其中的几个属性在数据类型的所有实例中保持静态,并允许至少一个在运行时可写吗
我开始制作一个"统计数据"像这样的课:
public class BaseballStatistic
{
public string Abbreviation;
public string Description;
public string XmlAttributeName;
public string Value;
public BaseballStatistic(string abbreviation, string description, string xmlAttributeName)
{
Abbreviation = abbreviation;
Description = description;
XmlAttributeName = xmlAttributeName;
}
}
这个问题是我永远不需要在运行时更改缩写,描述或XML属性名称。
我觉得我应该知道这一点。
我应该补充一点:因为我可以使用很多不同的统计数据,如果我找到一个可以将它们暴露给Intellisense的解决方案,那就太棒了。例如:
统计g = Stats.G amesPlayed
答案 0 :(得分:5)
听起来你需要一个班级用于&#34;统计&#34; - 然后是Dictionary<PlayerStat, int>
(或任何值)。
PlayerStat
类会知道缩写,描述和XML属性名称 - 我建议你可以静态地创建一个Dictionary<string, PlayerStat>
来映射从缩写到统计,另一个从XML属性映射到缩写。
您可能甚至不需要Dictionary<PlayerStat, int>
课程中的Player
...您可以随时添加一个懒惰地查找内容的索引器或方法。 (但要小心这一点 - 你可能会发现懒散加载很多东西比一次加载所有东西都要贵。你可能想要将统计数据分成几类,并在加载一个类别时加载所有统计数据基本上,如果有一堆通常一起使用的统计数据......)