using Microsoft.Extensions.DependencyInjection;
using System.Threading.Tasks;
public class LoggingDecorator : IDecorator
public async Task OnInvoke(Call call)
Console.WriteLine("Will do some work!");
Console.WriteLine("Work is finished!");
[Decorate(typeof(LoggingDecorator))]
public virtual void DoWork()
Console.WriteLine("Working...");
var serviceProvider = new ServiceCollection()
.AddTransient<LoggingDecorator>()
var worker = serviceProvider.GetRequiredService<Worker>();