namespace Bit.Seeder; public interface IScene { Type GetRequestType(); SceneResult Seed(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 { SceneResult Seed(TRequest request); Type IScene.GetRequestType() => typeof(TRequest); SceneResult IScene.Seed(object request) { var result = Seed((TRequest)request); return new SceneResult(mangleMap: result.MangleMap, trackedEntities: result.TrackedEntities); } } public interface IScene : IScene where TRequest : class where TResult : class { SceneResult Seed(TRequest request); Type IScene.GetRequestType() => typeof(TRequest); SceneResult IScene.Seed(object request) => (SceneResult)Seed((TRequest)request); }