Powtarzające się właściwości w ViewModels

0

Mam następującą klasę Product

public class Product
    {
        public string ProductName { get; set; }
        public string Category { get; set; }
        public string SubCategory { get; set; }
        public string Components { get; set; }
        public List<decimal> Price { get; set; }
        public List<double> Size { get; set; }
        public double? Weight { get; set; }
        public bool IsInLocal { get; set; }
        public bool IsOnline { get; set; }
    }

Mam ViewModel SelectAdditionalComponentsViewModel, który m.in. zawiera właściwości ProductName, Components , Price.
Mam również ViewModel BasketViewModel, który przedstawia się następująco

public class BasketViewModel
    {
        public List<Product> Products { get; set; }
        public decimal OrderPrice { get; set; }


        public class Product
        {
            public string ProductName { get; set; }
            public string ProductComponents { get; set; }
            public string AdditionalComponents { get; set; }
            public double? Size { get; set; }
            public double? Weight { get; set; }
            public decimal ProductPrice { get; set; }
        }
    }

Mam jeszcze inne View Modele, które mają niektóre właściwości takie jak w klasie Product.

Jak widać właściwości z klasy Product w pewnej części powielane są w kilku view modelach.
Jak w takim przypadku powinny wyglądać View modele? Czy każdy ViewModel powinien mieć swoje właściwości, bez względu na to, czy takowe już istnieją, czy może taki ViewModel powinien dziedziczyć po klasie Product, z tym, że wówczas niektóre właściwości bezużyteczne?

1
panDawid napisał(a):

Czy każdy ViewModel powinien mieć swoje właściwości, bez względu na to, czy takowe już istnieją, czy może taki ViewModel powinien dziedziczyć po klasie Product, z tym, że wówczas niektóre właściwości bezużyteczne?

Zdecydowanie to pierwsze. Rozwiązanie drugie ma same wady:

  1. trzeba jakoś ukrywać te nadmiarowe wartości podczas wyświetlania;
  2. ale zapewne pobierać ze źródła i przesyłać trzeba wszystko, co wiąże się z niepotrzebnym narzutem wydajnościowym;
  3. jeśli dodasz coś w bazowej klasie, to automatycznie pojawi się wszędzie, czyli także tam, gdzie tego nie chcesz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1