internal static IObservable <object> Connect(this XafApplication application, Type sequenceStorageType = null) { sequenceStorageType ??= typeof(SequenceStorage); Guard.TypeArgumentIs(typeof(ISequenceStorage), sequenceStorageType, nameof(sequenceStorageType)); var objectSpaceProvider = application.ObjectSpaceProvider == null?application.WhenSetupComplete() .Select(_ => application.ObjectSpaceProvider) : application.ObjectSpaceProvider.ReturnObservable(); return(objectSpaceProvider.SelectMany(provider => provider.SequenceGeneratorDatalayer() .SelectMany(dataLayer => application.WhenObjectSpaceCreated().GenerateSequences(dataLayer, sequenceStorageType) .Merge(application.Security.AddAnonymousType(sequenceStorageType).ToObservable()))) .Merge(application.ConfigureDetailViewSequenceStorage())); }