namespace Bit.Seeder; public interface IScene { Type GetRequestType(); Task> SeedAsync(object request); } /// /// Generic scene interface for seeding operations with a specific request type. Does not return a value beyond tracking entities and a mangle map. /// /// public interface IScene : IScene where TRequest : class { Task SeedAsync(TRequest request); Type IScene.GetRequestType() => typeof(TRequest); async Task> IScene.SeedAsync(object request) { var result = await SeedAsync((TRequest)request); return new SceneResult(mangleMap: result.MangleMap); } } public interface IScene : IScene where TRequest : class where TResult : class { Task> SeedAsync(TRequest request); Type IScene.GetRequestType() => typeof(TRequest); async Task> IScene.SeedAsync(object request) => (SceneResult)await SeedAsync((TRequest)request); }