Example #1
0
    private void AddModel <T>(out T instance) where T : CModelBase, new()
    {
        instance = new T();
        models.Add(instance);

        //自动注册所有的消息监听函数
        foreach (var method in typeof(T).GetMethods())
        {
            if (method.Name.StartsWith("OnSc"))
            {
                //获取到泛型
                var args = method.GetParameters()[1].ParameterType;

                List <Callback> calls;
                if (!msgRegister.TryGetValue(args, out calls))
                {
                    calls = new List <Callback>();
                    msgRegister.Add(args, calls);
                }
                calls.Add(new Callback(method, instance));
            }
        }
        instance.Init();

        if (instance.update != null && !updateList.Contains(instance.update))
        {
            updateList.Add(instance.update);
        }
    }