C#C
C#11mo ago
Canyon

✅ Will I fall into a gotcha with this constructor?

Hi, all:

I'm trying to setup a class for managing my AWS S3 interactions, but I'm wondering if there are any issues with my definition:

C#
    public class S3Service(ILogger<S3Service> logger, IAmazonS3 s3Client) : IS3Service
    {
        private readonly ILogger<S3Service> _logger = logger;
        private readonly IAmazonS3 _s3Client = s3Client;
        private readonly TransferUtility _transferUtility = new(s3Client);
...


Looks simple enough, but I'm worried about two things, TransferUtility inherits from
IDisposable
, will the framework properly handle the disposability of the
_transferUtility
? Also, would it be more appropriate to create a new
TransferUtility
object under the scope of each function that I want to use the class rather than creating a class field? For example:

C#
public Task MyUploadFunctionAsync()
{
  using var transfer = new TransferUtility();
  ... transfer files
}


I'll be expecting to upload many (~50 25MB) files at once. If the latter approach is more appropriate I can of course pass in a list of objects I'd like to upload.


Thanks 🙂
Was this page helpful?