Example #1
0
        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());
            }
        }