少年修仙传客户端基础资源
dabaoji
2023-11-13 0a23e1b83f8fda8ab9f9e32fe71c26c431faf63a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
 
class ILRuntimeUtility : Singleton<ILRuntimeUtility>
{
 
    public ILRuntime.Runtime.Enviorment.AppDomain appdomain {
        get {
            return ILLauncherProxy.Instance.appdomain;
        }
    }
 
    public void AddEvent(string modelName, string eventName, Action action)
    {
        var iType = appdomain.LoadedTypes[modelName];
        var get_Instance = iType.GetMethod("get_Instance", 0);
        var instance = appdomain.Invoke(get_Instance, null);
        var type = iType.ReflectionType;
        var eventInfo = type.GetEvent(eventName);
        eventInfo.AddEventHandler(instance, action);
    }
 
    public void RemoveEvent(string modelName, string eventName, Action action)
    {
        var iType = appdomain.LoadedTypes[modelName];
        var get_Instance = iType.GetMethod("get_Instance", 0);
        var instance = appdomain.Invoke(get_Instance, null);
        var type = iType.ReflectionType;
        var eventInfo = type.GetEvent(eventName);
        eventInfo.RemoveEventHandler(instance, action);
    }
 
    public void ModelInvoke(string modelName, string methodName, params object[] p)
    {
        var iType = appdomain.LoadedTypes[modelName];
        var get_Instance = iType.GetMethod("get_Instance", 0);
        var method = iType.GetMethod(methodName, p.Length);
        var instance = appdomain.Invoke(get_Instance, null);
        appdomain.Invoke(method, instance, p);
    }
 
    public T ModelInvoke<T>(string modelName, string methodName, params object[] p)
    {
        var iType = appdomain.LoadedTypes[modelName];
        var get_Instance = iType.GetMethod("get_Instance", 0);
        var method = iType.GetMethod(methodName, p.Length);
        var instance = appdomain.Invoke(get_Instance, null);
        return (T)appdomain.Invoke(method, instance, p);
    }
 
}