当前位置: 首页 > news >正文

20251017流程控制Demo

   

 #region  2.类共同方法// 定义接口,所有类都实现这个接口public interface IExecutable{string Run(params object[] parameters);}public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){string className = "MethodA";  // 类名(不包含命名空间)string methodName = "MethodA";  // 类名(不包含命名空间)//string methodName = "MethodAExecute";  // 方法名object[] parameters = new object[] { 1.5 };  // 参数数组MethodFactory factory = new MethodFactory();try{var result = factory.ExecuteMethod(methodName, parameters);Console.WriteLine(result);}catch (Exception ex){Console.WriteLine(ex.Message);}}}public class MethodA: IExecutable{public string Run(params object[] parameters){return $"MethodA executed with parameter {parameters}";}}public class MethodB: IExecutable{public string Run(params object[] parameters){return $"MethodB executed with parameter {parameters}";}}public class MethodC : IExecutable{public string Run(params object[] parameters){return $"MethodC executed with parameter {parameters}";}}public class MethodD : IExecutable{public string Run(params object[] parameters){return $"MethodD executed with parameter {parameters}";}}public class MethodE : IExecutable{public string Run(params object[] parameters){return $"MethodE executed with parameter {parameters}";}}// 反射工厂类,用于动态执行方法public class MethodFactory{public ExecuteResult ExecuteMethod(string className, object[] parameters){// 使用完整类名(包含命名空间)获取类类型Type type = Type.GetType("WinForms_RPCActive." + className);if (type == null){throw new Exception($"Class {className} not found.");}// 创建类的实例object classInstance = Activator.CreateInstance(type);// 获取 'Run' 方法MethodInfo methodInfo = type.GetMethod("Run");if (methodInfo == null){throw new Exception($"Method 'Run' not found in class {className}.");}// 调用方法并返回结果return (ExecuteResult)methodInfo.Invoke(classInstance, parameters);}public ExecuteResult ExecuteMethodAll(List<string> classNames, object[] parameters){// 如果 classNames 列表为空,直接返回if (classNames.Count == 0){Console.WriteLine("No classes to execute.");return ExecuteResult.CreateFailedResult();}foreach (var className in classNames){try{// 调用 ExecuteMethod 执行每个类的 Run 方法ExecuteResult result = ExecuteMethod(className, parameters);if (result.Code==EnumResultCode.Fail){}Console.WriteLine($"Execution result for {className}: {result}");return ExecuteResult.CreateSuccessResult();}catch (Exception ex){Console.WriteLine($"Error executing {className}: {ex.Message}");return ExecuteResult.CreateFailedResult();}}return ExecuteResult.CreateSuccessResult();}}public class ExecuteResult{public ExecuteResult() { }public object CurrentFailFunc { get; set; }public object NextFunc { get; set; }/// <summary>/// 执行结果/// </summary>public EnumResultCode Code { get; set; }/// <summary>/// 返回消息/// </summary>public string? Message { get; set; }/// <summary>/// 返回数据1/// </summary>public object? Data { get; set; }/// <summary>/// 返回列表数据/// </summary>public Dictionary<string, object> DataDict { get; set; }/// <summary>/// 执行成功/// </summary>/// <param name="message"></param>/// <param name="data"></param>public void IsSuccess(string message = "", object? data = null){Code = EnumResultCode.Success;Message = message;Data = data;}public static ExecuteResult CreateSuccessResult(string? _message = "", object? _data = null){return new ExecuteResult() { Code = EnumResultCode.Success, Message = _message, Data = _data };}public static ExecuteResult CreateFailedResult(string? _message = "初始设定-Fail", object? _data = null){return new ExecuteResult() { Code = EnumResultCode.Fail, Message = _message, Data = _data };}public static ExecuteResult CreateGoOndResult(string? _message, object? _data = null){return new ExecuteResult() { Code = EnumResultCode.GoOn, Message = _message, Data = _data };}}public enum EnumResultCode{[Description("执行失败")]Fail = 0,[Description("执行成功")]Success = 1,[Description("继续执行")]GoOn = 2}#endregion

#region  2.类共同方法

    // 定义接口,所有类都实现这个接口
public interface IExecutable
{
string Run(params object[] parameters);
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

        private void button1_Click(object sender, EventArgs e)
{
string className = "MethodA";  // 类名(不包含命名空间)
string methodName = "MethodA";  // 类名(不包含命名空间)
//string methodName = "MethodAExecute";  // 方法名
object[] parameters = new object[] { 1.5 };  // 参数数组

            MethodFactory factory = new MethodFactory();

            try
{
var result = factory.ExecuteMethod(methodName, parameters);
Console.WriteLine(result);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}


public class MethodA: IExecutable
{
public string Run(params object[] parameters)
{
return $"MethodA executed with parameter {parameters}";
}
}

    public class MethodB: IExecutable
{
public string Run(params object[] parameters)
{
return $"MethodB executed with parameter {parameters}";
}
}
public class MethodC : IExecutable
{
public string Run(params object[] parameters)
{
return $"MethodC executed with parameter {parameters}";
}
}
public class MethodD : IExecutable
{
public string Run(params object[] parameters)
{
return $"MethodD executed with parameter {parameters}";
}
}
public class MethodE : IExecutable
{
public string Run(params object[] parameters)
{
return $"MethodE executed with parameter {parameters}";
}
}

    // 反射工厂类,用于动态执行方法
public class MethodFactory
{
public ExecuteResult ExecuteMethod(string className, object[] parameters)
{
// 使用完整类名(包含命名空间)获取类类型
Type type = Type.GetType("WinForms_RPCActive." + className);
if (type == null)
{
throw new Exception($"Class {className} not found.");
}

            // 创建类的实例
object classInstance = Activator.CreateInstance(type);

            // 获取 'Run' 方法
MethodInfo methodInfo = type.GetMethod("Run");
if (methodInfo == null)
{
throw new Exception($"Method 'Run' not found in class {className}.");
}
// 调用方法并返回结果
return (ExecuteResult)methodInfo.Invoke(classInstance, parameters);
}

        public ExecuteResult ExecuteMethodAll(List<string> classNames, object[] parameters)
{
// 如果 classNames 列表为空,直接返回
if (classNames.Count == 0)
{
Console.WriteLine("No classes to execute.");
return ExecuteResult.CreateFailedResult();
}

            foreach (var className in classNames)
{
try
{
// 调用 ExecuteMethod 执行每个类的 Run 方法
ExecuteResult result = ExecuteMethod(className, parameters);
if (result.Code==EnumResultCode.Fail)
{

                    }
Console.WriteLine($"Execution result for {className}: {result}");
return ExecuteResult.CreateSuccessResult();
}
catch (Exception ex)
{
Console.WriteLine($"Error executing {className}: {ex.Message}");
return ExecuteResult.CreateFailedResult();
}
}
return ExecuteResult.CreateSuccessResult();
}
}

    public class ExecuteResult
{
public ExecuteResult() { }

        public object CurrentFailFunc { get; set; }

        public object NextFunc { get; set; }

        /// <summary>
/// 执行结果
/// </summary>
public EnumResultCode Code { get; set; }

        /// <summary>
/// 返回消息
/// </summary>
public string? Message { get; set; }
/// <summary>
/// 返回数据1
/// </summary>
public object? Data { get; set; }
/// <summary>
/// 返回列表数据
/// </summary>
public Dictionary<string, object> DataDict { get; set; }
/// <summary>
/// 执行成功
/// </summary>
/// <param name="message"></param>
/// <param name="data"></param>
public void IsSuccess(string message = "", object? data = null)
{
Code = EnumResultCode.Success;
Message = message;
Data = data;
}
public static ExecuteResult CreateSuccessResult(string? _message = "", object? _data = null)
{
return new ExecuteResult() { Code = EnumResultCode.Success, Message = _message, Data = _data };
}

        public static ExecuteResult CreateFailedResult(string? _message = "初始设定-Fail", object? _data = null)
{
return new ExecuteResult() { Code = EnumResultCode.Fail, Message = _message, Data = _data };
}

        public static ExecuteResult CreateGoOndResult(string? _message, object? _data = null)
{
return new ExecuteResult() { Code = EnumResultCode.GoOn, Message = _message, Data = _data };
}
}

    public enum EnumResultCode
{
[Description("执行失败")]
Fail = 0,
[Description("执行成功")]
Success = 1,
[Description("继续执行")]
GoOn = 2
}
#endregion

http://www.dtcms.com/a/496022.html

相关文章:

  • 浔川 AI 翻译 v7.0 公测版介绍(即将上线)
  • CPU性能对GPU服务器有影响吗?
  • 安徽省港航建设投资集团网站牛商网网站后台
  • 永磁体的磁导率
  • 亚马逊网站建设进度计划网站怎么做落款
  • h5模板网站西安到北京的高铁
  • wordpress建站两秒打开论坛模板建站
  • AI服务器工作之服务器的种类分类
  • 校园网站建设的目的中国建设机械教育协会网站
  • nextjs 接入 谷歌分析
  • asp.net core CVE-2025-55315漏洞验证修复
  • 建网站要多少费用加强信息管理 维护网站建设
  • 读书笔记:《2049未来10000天的可能》
  • 多GPU服务器在大型量子比特状态向量模拟中的实现方式
  • 网站下载器国际论坛网站模板
  • ui设计公司审美积累 | 金融人工智能与用户体验 用户界面仪表盘设计
  • 盗版小说网站怎么做售卖网站建设实验报告
  • 工业互联与设备IOT助力生产制造实践分享
  • 网站服务器试用网站定做公司
  • 深圳网站优化多少钱东道设计作品
  • 电商系统分布式架构实战:从单体到微服务的演进之路
  • C++中如何使用子类的指针指向父类的对象
  • 模版网站怎么做微信公众号微网站怎么建设
  • 推广网站多少钱足球积分排行榜最新
  • 网站建设与网页制作案例教程wordpress html5 模板下载
  • UI自动化测试实战:从入门到精通
  • android APP实现指纹免密登录的实现思路
  • AWS WAF 实战篇|如何防御爬虫、CC攻击与恶意POST请求
  • 网站开发环境有什么seo比较好的公司
  • 织梦cms怎么打不开网站phpcms做企业网站授权