public void RunModule(IModuleOptions options = null) { if (!string.IsNullOrEmpty(options?.ServerIp)) { Job.SetServerIp(options.ServerIp); } IJob job = null; try { job = CreateJob(options?.Priority ?? 0, options?.Username ?? ""); Run(new ModuleInfo(job, null)); } finally { job?.FinishJob(); } }
/// <summary> /// 设置属性值 /// </summary> /// <param name="options"></param> /// <param name="property"></param> /// <param name="value"></param> private void SetValue(IModuleOptions options, PropertyInfo property, object value) { var propertyType = property.PropertyType; if (propertyType.IsNullable() && value == null) { property.SetValue(options, null); return; } if (propertyType.IsNullable()) { propertyType = Nullable.GetUnderlyingType(propertyType); } if (value == null) { property.SetValue(options, default); return; } if (propertyType.IsEnum) { property.SetValue(options, Enum.Parse(propertyType, value.ToString())); } else if (propertyType.IsString()) { property.SetValue(options, value); } else if (propertyType.IsByte()) { property.SetValue(options, value.ToByte()); } else if (propertyType.IsChar()) { property.SetValue(options, value.ToChar()); } else if (propertyType.IsShort()) { property.SetValue(options, value.ToShort()); } else if (propertyType.IsInt()) { property.SetValue(options, value.ToInt()); } else if (propertyType.IsLong()) { property.SetValue(options, value.ToLong()); } else if (propertyType.IsFloat()) { property.SetValue(options, value.ToFloat()); } else if (propertyType.IsDouble()) { property.SetValue(options, value.ToDouble()); } else if (propertyType.IsDecimal()) { property.SetValue(options, value.ToDecimal()); } else if (propertyType.IsDateTime()) { property.SetValue(options, value.ToDateTime()); } else if (propertyType.IsBool()) { property.SetValue(options, value.ToBool()); } else if (propertyType.IsGuid()) { property.SetValue(options, value.ToGuid()); } }