コード例 #1
0
        public OperationDefinitionDTO GetDefinitionOperation(int idHomeDevice, string nameOperation)
        {
            UnitOfWork repository = UnitOfWork.GetInstance();

            HomeDevice homeDevice = repository.HomeDeviceRespository.GetById(idHomeDevice);

            if (homeDevice == null)
            {
                throw new ArgumentException("HomeDevice id doesn't exist");
            }

            MethodInfo method = homeDevice.GetArgsOperation(nameOperation);

            // For extension method. Remove the frist parameter (extension parameter)
            IEnumerable <ParameterInfo> methodParameters = method.IsDefined(typeof(ExtensionAttribute), true) ?
                                                           method.GetParameters().Skip(1) :
                                                           method.GetParameters();

            OperationDefinitionDTO operationResult = new OperationDefinitionDTO
            {
                NameOperation   = method.Name,
                ReturnValueType = method.ReturnType.ToString(),
                Args            = methodParameters
                                  .Select(p => new ParamDTO {
                    Name = p.Name, Type = p.ParameterType.ToString(), Value = p.DefaultValue
                })
                                  .ToArray(),
            };

            return(operationResult);
        }
コード例 #2
0
        private void SetSenderOperationForm(object sender, EventArgs e)
        {
            if (this.operationList.SelectedItem != null && listBoxHomeDevices.SelectedItem != null)
            {
                HomeDeviceDTO homeDevice = (HomeDeviceDTO)listBoxHomeDevices.SelectedItem;

                string operationName = (string)this.operationList.SelectedItem;

                OperationDefinitionDTO operation = Services.OperationService.GetDefinitionOperation(homeDevice.Id, operationName);

                tableLayoutPanel3.Controls.Clear();
                for (int i = 0; i < operation.Args.Count(); i++)
                {
                    SetControl(operation.Args[i], i);
                }
            }
        }