Search code examples
c#asp.netoopsolid-principles

Ending with too many objects (layered design)


I have a lot of dropdown lists, custom grids on my webform which are displayed to the end user. Each is populated from database through a DAL. I have separate classes defined for each. However, I am thinking about reducing the number of classes, as every new requirement results in a separate custom object.

How can I reduce the no. of classes for such requirements? Should I use datasets, lists etc. ?


Solution

  • "Separate classes defined for each" and "How can I reduce the no. of classes for such requirements".

    Do you really create a new class for each dropdown list? From my experience, usually I generalized it by using this class:

    public class DropDownItem<T>{
      public string Display{get;set;}
      public T Value{get;set;}
    }
    

    It can be done using Dictionary<T> though.

    Never used in ASP.Net, but it works well in Winform and WPF databinding. In Asp.Net specific, I think normal select-option is enough to supply the need.

    However for gridview, you need to generalize your classes to be more generic. Declare a class which has most of the parameter, which is nullable.

    Example one request has 10 parameter, 5 is mandatory and other 5 is nullable. Grid A display param 1,2,3,4,5,7,8 and grid B display param 1,2,3,4,5,6,9,10. This way, you can use one class in many more grid.

    Don't use DataSets/DataTable. It is better to use more class than DataSet. The maintainability will be better when using more class than DataSet, because it is strongly typed, rather than "COLUMN_NAME" in DataSet.