コード例 #1
0
        private static LightParameterInfo[] GetParameterInfoArray(MethodInfo methodInfo,
                                                                  InfoArrayMode mode = InfoArrayMode.Invoke)
        {
            var parameters = methodInfo.GetParameters();
            var infoList   = (from t in parameters
                              where mode != InfoArrayMode.EndInvoke || t.ParameterType.IsByRef
                              select new LightParameterInfo(t)).ToList();

            switch (mode)
            {
            case InfoArrayMode.BeginInvoke:
                infoList.Add(new LightParameterInfo(typeof(AsyncCallback), "callback"));
                infoList.Add(new LightParameterInfo(typeof(object), "object"));
                break;

            case InfoArrayMode.EndInvoke:
                infoList.Add(new LightParameterInfo(typeof(IAsyncResult), "result"));
                break;

            case InfoArrayMode.Invoke:
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(mode), mode, null);
            }

            var infoArray = new LightParameterInfo[infoList.Count];

            for (var i = 0; i < infoList.Count; i++)
            {
                infoArray[i] = infoList[i];
            }
            return(infoArray);
        }
コード例 #2
0
        private static LightParameterInfo[] GetParameterInfoArray(MethodInfo methodInfo,
                                                                  InfoArrayMode mode = InfoArrayMode.Invoke)
        {
            var parameters = methodInfo.GetParameters();
            var infoList   = new List <LightParameterInfo>();

            for (var i = 0; i < parameters.Length; i++)
            {
                if (mode != InfoArrayMode.EndInvoke || parameters[i].ParameterType.IsByRef)
                {
                    infoList.Add(new LightParameterInfo(parameters[i]));
                }
            }
            if (mode == InfoArrayMode.BeginInvoke)
            {
                infoList.Add(new LightParameterInfo(typeof(AsyncCallback), "callback"));
                infoList.Add(new LightParameterInfo(typeof(object), "object"));
            }

            if (mode == InfoArrayMode.EndInvoke)
            {
                infoList.Add(new LightParameterInfo(typeof(IAsyncResult), "result"));
            }
            var infoArray = new LightParameterInfo[infoList.Count];

            for (var i = 0; i < infoList.Count; i++)
            {
                infoArray[i] = infoList[i];
            }
            return(infoArray);
        }
コード例 #3
0
        private static LightParameterInfo[] GetParameterInfoArray(MethodInfo methodInfo, InfoArrayMode mode = InfoArrayMode.Invoke)
        {
            var parameters = methodInfo.GetParameters();
            var infoList   = (from t in parameters
                              where mode != InfoArrayMode.EndInvoke || t.ParameterType.IsByRef
                              select new LightParameterInfo(t)).ToList();

            if (mode == InfoArrayMode.BeginInvoke)
            {
                infoList.Add(new LightParameterInfo(typeof(AsyncCallback), "callback"));
                infoList.Add(new LightParameterInfo(typeof(object), "object"));
            }
            if (mode == InfoArrayMode.EndInvoke)
            {
                infoList.Add(new LightParameterInfo(typeof(IAsyncResult), "result"));
            }
            var infoArray = new LightParameterInfo[infoList.Count];

            for (var i = 0; i < infoList.Count; i++)
            {
                infoArray[i] = infoList[i];
            }
            return(infoArray);
        }