예제 #1
0
 private static T ComputeChainedValue <T>(SettingsContextBase firstContext, Func <SettingsContextBase, T> valueGetter)
 {
     for (SettingsContextBase settingsContextBase = firstContext; settingsContextBase != null; settingsContextBase = settingsContextBase.NextContext)
     {
         T t = valueGetter(settingsContextBase);
         if (t != null && !t.Equals(default(T)))
         {
             return(t);
         }
     }
     return(default(T));
 }
예제 #2
0
 public static IDisposable ActivateContext(ISettingsContextProvider provider)
 {
     if (provider != null)
     {
         SettingsContextBase settingsContextBase = provider.GetSettingsContext() as SettingsContextBase;
         if (settingsContextBase != null)
         {
             return(settingsContextBase.Activate());
         }
     }
     return(null);
 }
예제 #3
0
 public GenericSettingsContext(string propertyName, string propertyValue, SettingsContextBase nextContext = null) : base(nextContext)
 {
     this.propertyName  = propertyName;
     this.propertyValue = propertyValue;
 }
 public SimpleDatabaseSettingsContext(Guid mdbGuid, SettingsContextBase nextContext = null) : base(nextContext)
 {
     this.mdbGuid = mdbGuid;
 }
예제 #5
0
            private static T ComputeInheritedValue <T>(Func <SettingsContextBase, T> valueGetter)
            {
                for (SettingsContextBase.NestedContext nestedContext = SettingsContextBase.NestedContext.Current; nestedContext != null; nestedContext = nestedContext.ParentContext)
                {
                    T t = SettingsContextBase.EffectiveContextObject.ComputeChainedValue <T>(nestedContext.Context, valueGetter);
                    if (t != null && !t.Equals(default(T)))
                    {
                        return(t);
                    }
                }
                ISettingsContext settingsContext = (SettingsContextBase.DefaultContextGetter != null) ? SettingsContextBase.DefaultContextGetter() : null;

                return(SettingsContextBase.EffectiveContextObject.ComputeChainedValue <T>(settingsContext as SettingsContextBase, valueGetter));
            }
예제 #6
0
 public NestedContext(SettingsContextBase context)
 {
     this.Context       = context;
     this.ParentContext = SettingsContextBase.NestedContext.current;
     SettingsContextBase.NestedContext.current = this;
 }
예제 #7
0
 public SettingsContextBase(SettingsContextBase nextContext)
 {
     this.HashableIdentity = Guid.NewGuid().ToString();
     this.NextContext      = nextContext;
 }
예제 #8
0
 public MailboxSettingsContext(Guid mailboxGuid, SettingsContextBase nextContext = null) : base(nextContext)
 {
     this.mailboxGuid = mailboxGuid;
 }