© 2026 Hedgehog Software, LLC

TwitterGitHubDiscord
More
CommunitiesDocsAboutTermsPrivacy
Search
Star
Setup for Free
C#C
C#•4y ago•
5 replies
ross

Multiple classes defining same props vs inherit from base class

Say I have multiple service classes, here's two as an example:

public class FooService {
  
  private readonly DbContext _db;
  private readonly ILogger<FooService> _logger;

  public FooService(DbContext db, ILogger<FooService> logger) {
    _db = db;
    _logger = logger;
  }
}

public class BarService {
  
  private readonly DbContext _db;
  private readonly ILogger<FooService> _logger;

  public BarService(DbContext db, ILogger<BarService> logger) {
    _db = db;
    _logger = logger;
  }
}
public class FooService {
  
  private readonly DbContext _db;
  private readonly ILogger<FooService> _logger;

  public FooService(DbContext db, ILogger<FooService> logger) {
    _db = db;
    _logger = logger;
  }
}

public class BarService {
  
  private readonly DbContext _db;
  private readonly ILogger<FooService> _logger;

  public BarService(DbContext db, ILogger<BarService> logger) {
    _db = db;
    _logger = logger;
  }
}


Instead of repeating the two private properties and the ctor on every service class, would it be acceptable to create a base class which the service classes inherit from? E.g:

public class BaseService {
  
  public readonly DbContext _db;
  public readonly ILogger<BaseService> _logger;

  public BaseService(DbContext db, ILogger<BaseService> logger) {
    _db = db;
    _logger = logger;
  }
}

public class FooService {

  public FooService(DbContext db, ILogger<BaseService> logger) : base(db, logger)
  {
  }
}

public class BarService{
  
  public BarService(DbContext db, ILogger<BaseService> logger) : base(db, logger)
  {
  }
}
public class BaseService {
  
  public readonly DbContext _db;
  public readonly ILogger<BaseService> _logger;

  public BaseService(DbContext db, ILogger<BaseService> logger) {
    _db = db;
    _logger = logger;
  }
}

public class FooService {

  public FooService(DbContext db, ILogger<BaseService> logger) : base(db, logger)
  {
  }
}

public class BarService{
  
  public BarService(DbContext db, ILogger<BaseService> logger) : base(db, logger)
  {
  }
}


I'm just approaching this from a DRY point of view. Technically I'm still repeating myself with the ctor in every service class, but it just seems cleaner? Some guidance would be much appreciated
C# banner
C#Join
We are a programming server aimed at coders discussing everything related to C# (CSharp) and .NET.
61,871Members
Resources

Similar Threads

Was this page helpful?
Recent Announcements

Similar Threads

Inherit from Abstract class: base.Do() vs field.Do
C#CC# / help
4y ago
Any way to inherit base abstract class' constructor?
C#CC# / help
2y ago
Calling methods from a base class
C#CC# / help
3y ago
Base Class architecture
C#CC# / help
2y ago