public void Initialize(IStateManager stateManager, IReferenceManager referenceManager, ISurrogateManager surrogateManager)
        {
            this.stateManager     = stateManager;
            this.referenceManager = referenceManager;
            this.surrogateManager = surrogateManager;
            var tkey   = typeof(TKey);
            var tvalue = typeof(TValue);

            var tkeyIsValueTypeOrStringOrTypeNotStruct = IsValueTypeOrStringOrTypeNotStruct(tkey);
            var tvalueIsValueTypeOrString = IsValueTypeOrStringOrType(tvalue);

            if (tkeyIsValueTypeOrStringOrTypeNotStruct && tvalueIsValueTypeOrString)
            {
                implementation = new DictCase1 <TKey, TValue>();
                CaseType       = 1;
            }
            else if (tkeyIsValueTypeOrStringOrTypeNotStruct &&
                     (typeof(IStateObject).IsAssignableFrom(tvalue) ||
                      TypeCacheUtils.IsIListOrIDictionary(tvalue))


                     )
            {
                implementation = new DictCase2 <TKey, TValue>(stateManager, referenceManager);
                ((DictCase2 <TKey, TValue>)implementation).SetParent(this);
                CaseType = 2;
            }
            else if (tkeyIsValueTypeOrStringOrTypeNotStruct && typeof(Delegate).IsAssignableFrom(tvalue))
            {
                implementation = new DictCase5 <TKey, TValue>(stateManager, surrogateManager);

                CaseType = 5;
            }
            else if (typeof(IStateObject).IsAssignableFrom(tkey) && tvalueIsValueTypeOrString)
            {
                implementation = new DictCase3 <TKey, TValue>();
                CaseType       = 3;
            }
            else if (typeof(IStateObject).IsAssignableFrom(tkey) &&
                     (typeof(IStateObject).IsAssignableFrom(tvalue) || TypeCacheUtils.IsIListOrIDictionary(tvalue))
                     )
            {
                implementation = new DictCase4 <TKey, TValue>();
                CaseType       = 4;
            }
            else if (tkeyIsValueTypeOrStringOrTypeNotStruct && SurrogatesDirectory.IsSurrogateRegistered(tvalue))
            {
                implementation = new DictCase6 <TKey, TValue>(stateManager, surrogateManager, referenceManager);
                ((DictCase6 <TKey, TValue>)implementation).SetParent(this);
                CaseType = 6;
            }
            else
            {
                throw new NotSupportedException();
            }
        }
 public void InitializeTheList(IStateManager stateManager, IPageManager pageManager, IReferenceManager refManager, ISurrogateManager surManager, IUniqueIDGenerator uniqueIdGenerator, IServerEventAggregator serverEventAggregator)
 {
     _stateManager          = stateManager;
     _pageManager           = pageManager;
     _referenceManager      = refManager;
     _surrogateManager      = surManager;
     _uniqueIdGenerator     = uniqueIdGenerator;
     _serverEventAggregator = serverEventAggregator;
     InitializeOperationHelper();
 }
 /// <summary>
 /// This constructor is used for Mock Unit Testing purposes
 /// </summary>
 public VirtualList(IStateManager stateManager, IPageManager pageManager, IReferenceManager refManager, ISurrogateManager surManager = null, List <string> idxs = null, Dictionary <string, int> dict = null)
 {
     _stateManager             = stateManager;
     _pageManager              = pageManager;
     _referenceManager         = refManager;
     _surrogateManager         = surManager;
     PageUniqueIdOfTheIndexes  = idxs ?? new List <string>();
     InitialPositionOfEachPage = dict ?? new Dictionary <string, int>();
     InitializeOperationHelper();
 }
 void IObservableDictionaryEntries.Initialize(IStateManager stateManager, IReferenceManager referenceManager, ISurrogateManager surrogateManager)
 {
     throw new NotImplementedException();
 }
 internal DictCase6(IStateManager stateManager, ISurrogateManager surrogateManager, IReferenceManager referencesManager)
 {
     _stateManager          = stateManager;
     this.surrogateManager  = surrogateManager;
     this.referencesManager = referencesManager;
 }
Esempio n. 6
0
        /// <summary>
        /// Get the dependencies associated to an object.
        /// </summary>
        /// <param name="obj">Object instance</param>
        /// <param name="stateManager">StateManager instance</param>
        /// <param name="surrogateManager">SurrogateManager instance</param>
        /// <returns>List of dependencies</returns>
        public static List <object> GetObjectDependencies(object obj, IStateManager stateManager, ISurrogateManager surrogateManager, ISurrogateDependencyManager surrogateDependencyManager)
        {
            var result = new List <object>();

            lock (_syncSurrogates)
            {
                SurrogatesInfo info = null;
                if (obj != null && TypeToSurrogate.TryGetValue(obj.GetType(), out info))
                {
                    //If there any dependencies register for this type?
                    if (info.CalculateDependencies != null)
                    {
                        //Collects the object dependencies.
                        foreach (var dependency in info.CalculateDependencies)
                        {
                            var dependencies = dependency(obj, (ISurrogateDependenciesContext)surrogateDependencyManager);
                            if (dependencies != null)
                            {
                                result.AddRange(dependencies);
                            }
                        }
                    }
                }
            }
            return(result);
        }
Esempio n. 7
0
 internal DictCase5(IStateManager stateManager, ISurrogateManager surrogateManager)
 {
     this.stateManager = stateManager; this.surrogateManager = surrogateManager;
 }