示例#1
0
 public HproseMethod(MethodInfo method, object obj, HproseResultMode mode)
 {
     this.obj = obj;
     this.method = method;
     this.mode = mode;
     ParameterInfo[] parameters = method.GetParameters();
     this.paramTypes = new Type[parameters.Length];
     for (int i = 0; i < paramTypes.Length; i++) {
         this.paramTypes[i] = parameters[i].ParameterType;
     }
 }
示例#2
0
        public HproseMethod(string methodName, Type type, Type[] paramTypes, HproseResultMode mode, bool simple) {
            this.obj = null;
#if dotNET45
            this.method = type.GetRuntimeMethod(methodName, paramTypes);
#else
            this.method = type.GetMethod(methodName, paramTypes);
#endif
            if (!method.IsStatic) {
                throw new MissingMethodException();
            }
            this.paramTypes = paramTypes;
            this.mode = mode;
            this.simple = simple;
        }
示例#3
0
 public HproseMethod(string methodName, object obj, Type[] paramTypes, HproseResultMode mode)
 {
     this.obj = obj;
     #if dotNET45
     this.method = obj.GetType().GetRuntimeMethod(methodName, paramTypes);
     #else
     this.method = obj.GetType().GetMethod(methodName, paramTypes);
     #endif
     if (method.IsStatic) {
         throw new MissingMethodException();
     }
     this.paramTypes = paramTypes;
     this.mode = mode;
 }
示例#4
0
 public AsyncInvokeContextBase(HproseClient client, string functionName, object[] arguments, HproseErrorEvent errorCallback, Type returnType, bool byRef, HproseResultMode resultMode, bool simple)
 {
     this.client = client;
     this.functionName = functionName;
     this.arguments = arguments;
     this.errorCallback = (errorCallback == null) ? client.OnError : errorCallback;
     this.returnType = returnType;
     this.byRef = byRef;
     this.resultMode = resultMode;
     this.simple = simple;
     this.syncContext = HproseClient.SynchronizationContext;
     this.context = new HproseClientContext(client);
 }
示例#5
0
 internal AsyncInvokeContextBase(HproseClient client, string functionName, object[] arguments, HproseErrorEvent errorCallback, Type returnType, bool byRef, HproseResultMode resultMode)
 {
     this.client = client;
     this.functionName = functionName;
     this.arguments = arguments;
     this.errorCallback = errorCallback;
     this.returnType = returnType;
     this.byRef = byRef;
     this.resultMode = resultMode;
     this.syncContext = HproseClient.SynchronizationContext;
 }
示例#6
0
 internal AsyncInvokeContext1(HproseClient client, string functionName, object[] arguments, HproseCallback1 callback, HproseErrorEvent errorCallback, Type returnType, HproseResultMode resultMode, bool simple)
     : base(client, functionName, arguments, errorCallback, returnType, false, resultMode, simple)
 {
     this.callback = callback;
 }
示例#7
0
 public void AddMethods(string[] methodNames, object obj, string aliasPrefix, HproseResultMode mode, bool simple)
 {
     AddMethods(methodNames, obj, obj.GetType(), aliasPrefix, mode, simple);
 }
示例#8
0
 public void AddMethods(string[] methodNames, object obj, HproseResultMode mode)
 {
     AddMethods(methodNames, obj, obj.GetType(), mode);
 }
示例#9
0
 public void AddMethod(string methodName, Type type, Type[] paramTypes, HproseResultMode mode, bool simple)
 {
     AddMethod(methodName, new HproseMethod(methodName, type, paramTypes, mode, simple));
 }
示例#10
0
 private void AddMethods(string[] methodNames, object obj, Type type, HproseResultMode mode, bool simple)
 {
     AddMethods(methodNames, obj, type, methodNames, mode, simple);
 }
示例#11
0
 public HproseMethod(string methodName, object obj, Type[] paramTypes, HproseResultMode mode)
     : this(methodName, obj, paramTypes, mode, false) {
 }
示例#12
0
 public void AddMethod(string methodName, Type type, Type[] paramTypes, string aliasName, HproseResultMode mode)
 {
     AddMethod(aliasName, new HproseMethod(methodName, type, paramTypes, mode));
 }
示例#13
0
 public void AddMethod(string methodName, object obj, HproseResultMode mode, bool simple)
 {
     AddMethod(methodName, obj, methodName, mode, simple);
 }
示例#14
0
 public void AddMethod(string methodName, Type type, HproseResultMode mode, bool simple)
 {
     AddMethod(methodName, type, methodName, mode, simple);
 }
示例#15
0
 public void AddMethod(string methodName, Type type, string aliasName, HproseResultMode mode)
 {
     AddMethod(methodName, null, type, aliasName, mode);
 }
示例#16
0
 public void AddMethod(string methodName, object obj, string aliasName, HproseResultMode mode, bool simple)
 {
     AddMethod(methodName, obj, obj.GetType(), aliasName, mode, simple);
 }
示例#17
0
 private void AddMethod(string methodName, object obj, Type type, string aliasName, HproseResultMode mode)
 {
     AddMethod(methodName, obj, type, aliasName, mode, false);
 }
示例#18
0
 public HproseMethod(MethodInfo method, object obj, HproseResultMode mode)
     : this(method, obj, mode, false) {
 }
示例#19
0
 public void AddMethod(string methodName, object obj, Type[] paramTypes, string aliasName, HproseResultMode mode, bool simple)
 {
     AddMethod(aliasName, new HproseMethod(methodName, obj, paramTypes, mode, simple));
 }
示例#20
0
        private void AddMethods(string[] methodNames, object obj, Type type, string[] aliasNames, HproseResultMode mode, bool simple)
        {
#if dotNET45
            IEnumerable <MethodInfo> methods = type.GetRuntimeMethods();
            for (int i = 0; i < methodNames.Length; ++i)
            {
                string methodName = methodNames[i];
                string aliasName  = aliasNames[i];
                foreach (MethodInfo method in methods)
                {
                    if (method.IsPublic && (method.IsStatic == (obj == null)) && (methodName == method.Name))
                    {
                        AddMethod(aliasName, new HproseMethod(method, obj, mode, simple));
                    }
                }
            }
#else
            BindingFlags flags   = (obj == null) ? BindingFlags.Static : BindingFlags.Instance;
            MethodInfo[] methods = type.GetMethods(flags | BindingFlags.Public);
            for (int i = 0; i < methodNames.Length; ++i)
            {
                string methodName = methodNames[i];
                string aliasName  = aliasNames[i];
                for (int j = 0; j < methods.Length; j++)
                {
                    if (methodName == methods[j].Name)
                    {
                        AddMethod(aliasName, new HproseMethod(methods[j], obj, mode, simple));
                    }
                }
            }
#endif
        }
示例#21
0
 public void AddMethod(string methodName, object obj, Type[] paramTypes, HproseResultMode mode)
 {
     AddMethod(methodName, new HproseMethod(methodName, obj, paramTypes, mode));
 }
 	public ResultModeAttribute(HproseResultMode mode) {
 		this.mode = mode;
 	}
示例#23
0
 private void AddMethods(string[] methodNames, object obj, Type type, string aliasPrefix, HproseResultMode mode)
 {
     AddMethods(methodNames, obj, type, aliasPrefix, mode, false);
 }
示例#24
0
 private void AddMethods(string[] methodNames, object obj, Type type, string aliasPrefix, HproseResultMode mode, bool simple)
 {
     string[] aliasNames = new string[methodNames.Length];
     for (int i = 0; i < methodNames.Length; ++i)
     {
         aliasNames[i] = aliasPrefix + "_" + methodNames[i];
     }
     AddMethods(methodNames, obj, type, aliasNames, mode, simple);
 }
示例#25
0
 public void AddMethod(MethodInfo method, object obj, string aliasName, HproseResultMode mode, bool simple)
 {
     AddMethod(aliasName, new HproseMethod(method, obj, mode, simple));
 }