예제 #1
0
        public static AgentManager GetAgentManagerInstance(AgentInfo agentInfo)
        {
            string    text;
            Exception ex;

            return(FactoryTable.LoadAssemblyAndCreateInstance <AgentManager>(agentInfo, delegate(Assembly assembly)
            {
                AgentManager agentManager = null;
                Type baseDeliveryAgentFactoryType = FactoryTable.GetBaseDeliveryAgentFactoryType(assembly.GetType(agentInfo.FactoryTypeName));
                if (baseDeliveryAgentFactoryType != null)
                {
                    Type[] genericArguments = baseDeliveryAgentFactoryType.GetGenericArguments();
                    if (genericArguments.Length == 1 && typeof(AgentManager).IsAssignableFrom(genericArguments[0]))
                    {
                        agentManager = (AgentManager)assembly.CreateInstance(genericArguments[0].FullName);
                        agentManager.AgentName = agentInfo.AgentName;
                    }
                }
                return agentManager;
            }, out text, out ex));
        }
예제 #2
0
        private static AgentFactory CreateAgentFactory(AgentInfo agentInfo)
        {
            string       assembly2;
            Exception    ex;
            AgentFactory agentFactory = FactoryTable.LoadAssemblyAndCreateInstance <AgentFactory>(agentInfo, (Assembly assembly) => (AgentFactory)assembly.CreateInstance(agentInfo.FactoryTypeName), out assembly2, out ex);

            if (agentFactory == null)
            {
                ExEventLog.EventTuple tuple = EdgeExtensibilityEventLogConstants.Tuple_MExAgentFactoryCreationFailure;
                if (ex is InvalidCastException)
                {
                    tuple = EdgeExtensibilityEventLogConstants.Tuple_MExAgentVersionMismatch;
                }
                ExchangeConfigurationException ex2 = new ExchangeConfigurationException(MExRuntimeStrings.InvalidTypeInConfiguration(agentInfo.FactoryTypeName, assembly2, (ex == null) ? "type not found" : ex.Message), ex);
                MExDiagnostics.EventLog.LogEvent(tuple, null, new object[]
                {
                    agentInfo.AgentName,
                    ex2.Message
                });
                throw ex2;
            }
            return(agentFactory);
        }