我正在创建一个库,用作API来处理特定网站。我在网站上列出了州和城市及其相应的ID。
状态列表及其城市列表必须可以在设计模式下访问(开发人员应该能够在不编译的情况下访问列表)。我通过使用静态变量创建静态类来完成此操作。
这是它的外观。
public class States
{
public static readonly States Arizona = new States(451, "Arizona", "lat", "lon");
//many of these here
public States(int key, string value, string lat, string lon, Cities cities)
{
this.Key = key;
this.Name = value;
this.Latitude = lat;
this.Longitude = lon;
this.Cities = cities;
}
}
public class Cities
{
public static readonly Cities Phoenix = new States(1, States.GetById(451), "Phoenix", "lat", "lon");
public Cities(int key, States state, string value, string lat, string lon)
{
this.Key = key;
this.Name = value;
this.State = state;
this.Latitude = lat;
this.Longitude = lon;
}
}
它将用作:var x = States.Arizona.Phoenix.Key;
因此。通过States.GetById()获取特定枚举时 - 一切都很好。 但是......我应该如何为States.Cities做同样的事情?它肯定应该是一个集合,但是然后用户(开发人员)将无法选择特定的城市而无需调用"按名称查找"功能什么的。
我可以为每个州做一个单独的课......但这听起来像是一个非常错误的方法。 这样做的正确方法是什么?
答案 0 :(得分:2)
实际上,您需要为每个状态设置一个单独的类,通常派生一个基类来获取标准方法,属性等。
您遇到的问题通常是代码生成问题。你想拥有一堆代码,尽可能少。我们为c#代码生成数据库模型,我们发现XSLT对此很有用。我们有一个包含所有值的XML文件(由另一个工具提取),以及一个将其转换为类的XSLT。