/// <summary>
 ///     Internal constructor with all dependencies.
 /// </summary>
 internal CustomInstanceProvider(Func <TImplementation> instanceGetter,
                                 IInjectionDetector injectionDetector,
                                 InstanceProtectionMode protectionMode,
                                 InjectionAlertChannel alertChannel,
                                 LifeTime lifeTime = LifeTime.Unknown)
     : base(lifeTime, injectionDetector, protectionMode, alertChannel)
 {
     _instanceGetter = instanceGetter ?? throw new ArgumentNullException(nameof(instanceGetter));
 }
예제 #2
0
 /// <summary>
 ///     <p>Initializes a new instance of the <see cref="SafeObject{TObject}" /> class.</p>
 /// </summary>
 /// <param name="settings">The settings.</param>
 /// <param name="injectionDetector">The injection protector.</param>
 /// <exception cref="ArgumentOutOfRangeException">
 ///     <paramref name="settings" /> is not null and <see cref="InitialSafeObjectSettings.InitialValue" /> is not a type
 ///     of <typeparamref name="TObject" />.
 /// </exception>
 /// <exception cref="ArgumentNullException">
 ///     <p><paramref name="injectionDetector" /> is <see langword="null" />.</p>
 ///     <p>
 ///         Initial object value from <paramref name="settings" /> is null or cannot be casted to
 ///         <typeparamref name="TObject" />
 ///     </p>
 /// </exception>
 internal SafeObject(IInitialSafeObjectSettings settings, IInjectionDetector injectionDetector)
     : base(settings.ProtectionMode)
 {
     _injectionDetector = injectionDetector ?? throw new ArgumentNullException(nameof(injectionDetector));
     _injectionDetector.AlertChannel = settings.AlertChannel;
     SetInitialValue(settings.InitialValue, ref _object);
     ChangeProtectionMode(new ProtectionChangeContext <SafeObjectProtectionMode>(settings.ProtectionMode));
     IsReadOnly = false;
     IsReadOnly = settings.IsReadOnly;
 }
예제 #3
0
 protected SafeInstanceProviderBase(LifeTime lifeTime, IInjectionDetector injectionDetector,
                                    InstanceProtectionMode protectionMode, InjectionAlertChannel alertChannel)
     : base(protectionMode)
 {
     _injectionDetector    = injectionDetector ?? throw new ArgumentNullException(nameof(injectionDetector));
     LifeTime              = lifeTime;
     AssemblyQualifiedName = typeof(TImplementation).AssemblyQualifiedName;
     AlertChannel          = alertChannel;
     ChangeProtectionMode(new ProtectionChangeContext <InstanceProtectionMode>(protectionMode));
 }
 private static SafeInstanceProviderBase <string> GetSut(LifeTime lifeTime = LifeTime.Unknown,
                                                         InstanceProtectionMode protectionMode = InstanceProtectionMode.NoProtection,
                                                         IInjectionDetector injectionDetector  = null,
                                                         InjectionAlertChannel alertChannel    = InjectionAlertChannel.DebugFail)
 {
     return(new TestInstanceProvider(
                alertChannel: alertChannel,
                injectionDetector: injectionDetector ?? Stubs.Get <IInjectionDetector>(),
                lifeTime: lifeTime,
                protectionMode: protectionMode));
 }
예제 #5
0
 public SafeObject <TestObject> GetSut(
     TestObject initialObject = null,
     bool isReadOnly          = false,
     SafeObjectProtectionMode protectionMode = Defaults.ObjectProtectionMode,
     IInjectionDetector injectionDetector    = null,
     InjectionAlertChannel channel           = Defaults.AlertChannel)
 {
     return
         (new SafeObject <TestObject>(
              new InitialSafeObjectSettings(
                  isReadOnly: isReadOnly, initialValue: initialObject,
                  protectionMode: protectionMode, alertChannel: channel)
              , injectionDetector ?? Stubs.Get <IInjectionDetector>()));
 }
 /// <summary>
 ///     Internal constructor with all dependencies.
 /// </summary>
 internal SingletonInstanceProvider(IInjectionDetector injectionDetector, InstanceProtectionMode protectionMode,
                                    InjectionAlertChannel alertChannel)
     : base(LifeTime.Singleton, injectionDetector, protectionMode, alertChannel)
 {
 }
 public TestInstanceProvider(LifeTime lifeTime, IInjectionDetector injectionDetector,
                             InstanceProtectionMode protectionMode, InjectionAlertChannel alertChannel) : base(
         lifeTime, injectionDetector, protectionMode, alertChannel)
 {
 }
예제 #8
0
 /// <summary>
 ///     Internal constructor with all dependencies.
 /// </summary>
 internal TransientInstanceProvider(IInjectionDetector injectionDetector, InstanceProtectionMode protectionMode,
                                    InjectionAlertChannel alertChannel)
     : base(LifeTime.Transient, injectionDetector, protectionMode, alertChannel)
 {
 }