我是编程新手,所以想知道以下代码中是否存在难闻的气味?

public class TransportationInfo
{
    public string TableName { get; private set; }
    public string PKName { get; private set; }

    public static TransportationInfo Bicycle = new TransportationInfo()
    {
        TableName = "bicycle_table",
        PKName = "aaa"
    };
    public static TransportationInfo Moto = new TransportationInfo()
    {
        TableName = "moto_table",
        PKName = "bbb"
    };
    public static TransportationInfo Car = new TransportationInfo()
    {
        TableName = "car_table",
        PKName = "ccc"
    };
    public static TransportationInfo Bus = new TransportationInfo()
    {
        TableName = "bus_table",
        PKName = "ddd"
    };

    public static void DoSomething()
    {
        // use TableName dosomething...
        // use PKName dosomething...
    }
}


然后,我可以使用代码片段在其他类中调用该函数

TransportationInfo.XXXXX.DoSomething()

但是,这种模式是否对整体有害?

最佳答案

通常,您会通过继承或接口来执行此类操作。

public abstract class TransportationInfo
{
  public string TableName { get; protected set; }
  public string PKName { get; protected set; }
  public abstract void DoSomething();
}
public class Bicycle : TransportationInfo
{
  public Bicycle()
  {
    TableName = "bicycle_table";
    PKName = "aaa";
  }
  public override void DoSomething()
  {
        // use TableName dosomething...
        // use PKName dosomething...
    }
}

关于c# - 那么如何初始化许多静态实例呢?有人看过用法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39611195/

10-08 22:25