C#/类和自定义类型

时间:2017-04-13 11:19:38

标签: c#

我开始使用C#进行冒险并且不了解所有技术,但我已经知道我想要实现的目标:

public class Product
{
    public string Name { get; set; }
    public double Price { get; set; }
    //public ??? Category { get; set; }
}

'类别'类型应该是自定义类型(?),它有8个可能的名称字符串值(食物,衣服等)和专门用于这些名称的图标(食物 - apple.jpg,衣服 - tshirt.jpg等等)

我该怎么做?

3 个答案:

答案 0 :(得分:4)

通常,在使用固定大小的类别(在您的情况下为\App\Mail\TestMail)时,我们会使用8类型:

enum

要添加图标,字符串等,我们可以实现扩展方法

  public enum ProductCategory {
    Food,
    Clothes,
    //TODO: put all the other categories here
  }

最后

  public static class ProductCategoryExtensions {
    // please, notice "this" for the extension method
    public static string IconName(this ProductCategory value) {
      switch (value) {
        case ProductCategory.Food:
          return "apple.jpg";
        case ProductCategory.Clothes:
          return "tshirt.jpg";
        //TODO: add all the other categories here

        default:
          return "Unknown.jpg"; 
      }
    }
  }

用法

  public class Product {
    public string Name { get; set; }
    public double Price { get; set; } // decimal is a better choice
    public ProductCategory Category { get; set; }
  }

答案 1 :(得分:0)

您可以使用预定义值定义Category类,如下所示:

public class Category
{
    public static Category Food = new Category("Food", "apple.jpg");
    // rest of the predefined values

    private Category(string name, string imageName)
    {
        this.ImageName = imageName;
        this.Name = name;
    }

    public string Name { get; private set; }
    public string ImageName { get; private set; }
}

public class Product
{
     public string Name { get; set; }
     public double Price { get; set; }
     public Category Category { get; set; }
}

然后,在您的代码中,您可以设置如下产品:

var product = new Product {Name= "product1", Price=1.2, Category = Category.Food};

答案 2 :(得分:-3)

首先,您要创建一个新的类,即自定义类型

public class Category {
  // I recommend to use enums instead of strings to archive this
  public string Name { get; set; }
  // Path to the icon of the category
  public string Icon { get; set; }
}

现在,在您的产品中,您可以将注释掉的行更改为:

// First Category is the type, the second one the Name
public Category Category { get; set; }

现在,您可以使用以下类别创建新产品:

var category = new Product() {
  Name = "ASP.NET Application",
  Price = 500,
  Category = new Category() {
    Name = "Software",
    Icon = "Software.jpg"
  }
}

现在,当您想要使用其他类别创建另一个产品时,只需重复过程即可。您还可以创建一个Categories数组,然后使用数组元素,例如类别=类别[3]。因此,您可以为食物创建一个类别,一个用于衣服等,将它们存储在阵列中并将它们用于您的产品。