ClassAssistance.Common/EventBus.cs

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Collections.Generic;


//事件相关
namespace ClassAssistance.Common
{
    /// <summary>
    /// 
    /// </summary>
    /// <typeparam name="TEvent"></typeparam>
    /// <typeparam name="TSource"></typeparam>
    public interface IEventListener<TEvent, TSource>
        where TEvent : Event<TSource>
    {
        void OnEvent(TEvent ev);
    }

    /// <summary>
    /// 
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public abstract class Event<T>
    {
        public int EventType { get; }
        public T Source { get; }
        public object Data { get; }

        protected Event(int eventType, T source, object data)
        {
            EventType = eventType;
            Source = source;
            Data = data;
        }
    }
        
    /// <summary>
    /// 
    /// </summary>
    public sealed class EventBus<TEvent, TSource>
        where TEvent : Event<TSource>
    {
        /// <summary>
        /// 
        /// </summary>
        private class Subscriber
        {
            public Predicate<TEvent> Guard
            {
                get;
            }
            public IEventListener<TEvent, TSource> Listener
            {
                get;
            }

            public Subscriber(Predicate<TEvent> guard, IEventListener<TEvent, TSource> listener)
            {
                Guard = guard;
                Listener = listener;
后面还有 57 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。