/// <summary> /// Get scenario of specified type from data session /// </summary> /// <typeparam name="TScenario">Type of scenario</typeparam> /// <param name="instance">Instance</param> /// <returns>Returns scenario</returns> public static TScenario GetScenario <TScenario>(this IDataSession instance) { //Arguments validation if (instance == null) { throw new ArgumentNullException(nameof(instance)); } //Try to cast to IMockDataSession IMockDataSession mockupSession = instance.AsMockDataSession(); //Get scenario from data session IScenario scenarioFromDataSession = mockupSession.GetScenario(); //Try cast of scenario to provided type if (!(scenarioFromDataSession is TScenario castedScenario)) { throw new InvalidCastException("Scenario contained on data session is of " + $"type '{scenarioFromDataSession.GetType().FullName}' and cannot be converted " + $"to type '{typeof(TScenario).FullName}'."); } //Return scenario return(castedScenario); }
/// <summary> /// Constructor /// </summary> public MockDataTransaction(IMockDataSession dataSession) { //Validazione argomenti if (dataSession == null) { throw new ArgumentNullException(nameof(dataSession)); } //Imposto lo stato iniziale IsActive = true; IsTransactionOwner = true; WasCommitted = false; WasRolledBack = false; //Imposto la data session _DataSession = dataSession; //Se già esiste una transanzione sull'holder, esco if (_DataSession.Transaction != null) { return; } //Imposto l'istanza corrente _DataSession.SetActiveTransaction(this); }
/// <summary> /// Convert provided data session in "IMockDataSession" /// </summary> /// <param name="instance">Instance</param> /// <returns>Returns converted data session</returns> public static IMockDataSession AsMockDataSession(this IDataSession instance) { //Arguments validation if (instance == null) { throw new ArgumentNullException(nameof(instance)); } //Tento il cast della sessione generica a MockDataSession IMockDataSession mockSession = instance as IMockDataSession; if (mockSession == null) { throw new InvalidCastException($"Specified data session of type '{instance.GetType().FullName}' " + $"cannot be converted to type '{typeof(IMockDataSession).FullName}'."); } //Returns instance return(mockSession); }