架构师的悟道3:自动化

// golang amc框架自动化handler示例
struct module {
  amc.handler
}

// 自动handler规则:普通消息
// onmsg_前缀
// 第1个参数是amc.msg_base的子类
func (module* this) onmsg_login(msg_login* msg) {
}

// 自动handler规则:Player消息
// onmsg_前缀
// 第1个参数是amc.msg_base的子类
// 第2个参数是amc.obj_base子类
func (module* this) onmsg_logout(msg_logout* msg, 
  player_t* player) {
}

// 反射自动获取消息处理函数名和参数
// 自动计算消息ID(名字哈希,碰撞则改名)
// 自动路由管理
// 自动派发消息到
amc.reg_handler(new module)

// C#框架自动化 Lua <--> C# 示例
//(当然如果策划懂c#可免lua)
// C# 端
class player
{
public:
  ["lua"]
  int id;
  ["lua"]
  string name;
  ["lua"]
  int get_attr(...)
  {
    return 200;
  }
}

// 开发期启动一次后自动在当前目录下生成
// LUA绑定源码文件: player.auto.cs
// 我们Delphi项目中自动生成了3万多行高质量代码
bind_to_lua(new player);

// lua 端
// 直接访问c#对象成员或方法
if player.get_attr() > 100 then
  print(player.id, player.name)
end

posted @ 2025-09-01 22:51  码客-ygluu  阅读(11)  评论(0)    收藏  举报