コード例 #1
0
        public object GetModule(ModuleType moduleType, Guid keyParameter)
        {
            if (moduleType == ModuleType.Unknown)
            {
                return(null);
            }
            var activator = serviceContainer.GetService <IModuleActivator>();
            IDictionary <Guid, WeakReference> identityCache;

            if (!modulesIdentityCache.TryGetValue(moduleType, out identityCache))
            {
                identityCache = new Dictionary <Guid, WeakReference>();
                modulesIdentityCache.Add(moduleType, identityCache);
            }
            return(GetModuleCore(identityCache, keyParameter, moduleType, (moduleTypeName, parameter) => activator.CreateModule(moduleTypeName), null));
        }
コード例 #2
0
        public object CreateModule(ModuleType moduleType)
        {
            var activator = serviceContainer.GetService <IModuleActivator>();
            var resolver  = serviceContainer.GetService <IModuleTypesResolver>();

            return(activator.CreateModule(resolver.GetTypeName(moduleType)));
        }
コード例 #3
0
        public object GetReport(object reportKey)
        {
            if (object.ReferenceEquals(reportKey, null))
            {
                return(null);
            }
            WeakReference reportReference;

            if (!reportsCache.TryGetValue(reportKey, out reportReference) || reportReference.Target == null)
            {
                var activator = serviceContainer.GetService <IReportActivator>();
                var report    = activator.CreateReport(reportKey);
                if (reportReference == null)
                {
                    reportReference = new WeakReference(report);
                    reportsCache.Add(reportKey, reportReference);
                }
                else
                {
                    reportReference.Target = report;
                }
            }
            return(reportReference.Target);
        }
コード例 #4
0
        public object GetReport(object reportKey)
        {
            var activator = serviceContainer.GetService <IReportActivator>();

            return(GetReportCore(reportKey, (reportTypeName) => activator.CreateReport(reportTypeName)));
        }