C#获取接口下面的类,并执行方法

获取所有程序集中的类
//var eventTypes = AppDomain.CurrentDomain.GetAssemblies()
//               .SelectMany(a => a.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IEvent)))).ToArray();
//获取当前程序集中的类
var eventTypes = GetType().Assembly.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IEvent))).ToArray();
foreach (var type in eventTypes)
{
    
    
    if (type.IsClass)
    {
    
    
        var obj = Activator.CreateInstance(type);
        if (obj is IUpdateEvent)
        {
    
    
            updateEvents.Add(obj as IUpdateEvent);
        }
        if(...)//不要使用else if,因为可继承多个接口
        //继续拓展继承IEvent的类
    }
}
public interface IEvent
{
    
    
}

public interface IUpdateEvent : IEvent
{
    
    
    void OnUpdate();
}

猜你喜欢

转载自blog.csdn.net/u010197227/article/details/126469905
今日推荐