I would base a decision on what methods do, if they do things specific to classes A, B and C, then they should be in the base class. This helps keep the code clean by hiding the functionality associated with the class from the rest of the system. (of course, I assume that A, B and C are either already inherited from D, or are explicitly related)
If they do things with other types that are not inherent in what A, B and C do, then in order to maximize the possibilities for reuse, they should be in the utility class.
If they do something with other types specific to this other type (for example, pretty-type datetime), consider making them extension methods for that type.
Massif
source share