尝试将int字段转换为继承类中的字符串

时间:2015-09-09 15:39:22

标签: c#

我提供了一个基类,包含以下字段:

public class OrdersModel
{
  public int orderType {get; set;}
  public int status {get; set;}
  public int accountType {get; set;}
}

我想创建一个可以覆盖这些字段的新类,每个字段将返回一个字符串,具体取决于数据库发回的int值。例如:

public class OrdersViewModel : OrdersModel
{
  public int orderType {
     get {
           case: (orderType == 0)
               return ("Standard Shipping");
               break;
           case: (orderType == 1)
               return ("Express Shipping");
               break;
           default:
               return ("Value Shipping");

         set{}    

         }
     }
}

不幸的是,我收到错误:代码无法缓存或无法将类型字符串转换为返回类型int

我可以将这些字段转换为基类中的字符串,但父类正在其他地方使用。我只想让继承的类显示人类可读的值。

我的问题如下:有没有办法可以强制转换或覆盖字段并使它们返回字符串而不是int?

谢谢

1 个答案:

答案 0 :(得分:0)

您只需更改返回类型即可覆盖,但您可以隐藏属性:

public class OrdersViewModel : OrdersModel
{
    public new string orderType {
        get 
        {
            switch(((OrdersModel)this).orderType) 
            {
                case(0):
                    return ("Standard Shipping");
                case (1):
                    return ("Express Shipping");
                default:
                    return ("Value Shipping");
            }
        }
        set{ /* reverse mapping from string to int */ ;}    
    }
}

但是从模型继承视图模型通常不是最佳选择。它可能似乎就像你在减少重复一样,但像AutoMapper这样的工具可以很容易地从一个类映射到另一个类,并且你不会污染你的模型验证逻辑或必须覆盖/隐藏您希望在视图模型中略微不同的属性。考虑封装或映射。我也更喜欢映射,因为它将viewmodel与特定的模型实现分离。