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); }
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); } } }