Beispiel #1
0
 private void GetReflection(int upStack, StackTrace stackTrace, out MethodInfo method,
                            out CanBeReflected reflection)
 {
     method     = (MethodInfo)stackTrace.GetFrame(upStack).GetMethod();
     reflection = (CanBeReflected)Attribute.GetCustomAttribute(method, typeof(CanBeReflected));
     if (reflection != null && reflection.NotReflectableLookUpAnotherTrace)
     {
         GetReflection(upStack + 1, stackTrace, out method, out reflection);
     }
 }
Beispiel #2
0
        public ServerHandler(string url, IRegistryCore registry, ConnectorBase conn) :
            base("POST", url)
        {
            m_registry = registry;
            if (m_methods == null)
            {
                m_methods = new Dictionary <string, List <MethodImplementation> >();
                List <string>        alreadyRunPlugins = new List <string>();
                List <ConnectorBase> connectors        = conn == null
                                                     ? ConnectorRegistry.Connectors
                                                     : new List <ConnectorBase>()
                {
                    conn
                };
                foreach (ConnectorBase plugin in connectors)
                {
                    if (alreadyRunPlugins.Contains(plugin.PluginName))
                    {
                        continue;
                    }
                    alreadyRunPlugins.Add(plugin.PluginName);
                    foreach (MethodInfo method in plugin.GetType().GetMethods())
                    {
                        CanBeReflected reflection =
                            (CanBeReflected)Attribute.GetCustomAttribute(method, typeof(CanBeReflected));
                        if (reflection != null)
                        {
                            string methodName = reflection.RenamedMethod == "" ? method.Name : reflection.RenamedMethod;
                            List <MethodImplementation> methods = new List <MethodImplementation>();
                            MethodImplementation        imp     = new MethodImplementation()
                            {
                                Method    = method,
                                Reference = plugin,
                                Attribute = reflection
                            };
                            if (!m_methods.TryGetValue(methodName, out methods))
                            {
                                m_methods.Add(methodName, (methods = new List <MethodImplementation>()));
                            }

                            methods.Add(imp);
                        }
                    }
                }
            }
        }