public Task <Tuple <TExtension, TExtensionInterface> > BindExtension <TExtension, TExtensionInterface>(Func <TExtension> newExtensionFunc) where TExtension : IGrainExtension where TExtensionInterface : IGrainExtension { return(providerRuntime.BindExtension <TExtension, TExtensionInterface>(newExtensionFunc)); }
public async Task BindAsync(Grain containerGrain, IServiceProvider services, ITransactionOrchestrationResultGrain resultGrain) { this.grain = containerGrain; this.resultGrain = resultGrain; this.logger = services.GetService <ILogger <TransactionalResource> >(); // bind extension to grain IProviderRuntime runtime = services.GetRequiredService <IProviderRuntime>(); Tuple <TransactionalExtension, ITransactionalExtension> boundExtension = await runtime.BindExtension <TransactionalExtension, ITransactionalExtension>(() => new TransactionalExtension()); boundExtension.Item1.Register(nameof(TransactionalResource), this); this.transactionalResource = boundExtension.Item2.AsTransactionalResource(nameof(TransactionalResource)); }