zoukankan      html  css  js  c++  java
  • [TWLFramework] Message

    using UnityEngine;
    using System.Collections;
    using System.Collections.Generic;
    using System;
    /*
    消息体
    直接遍历
    key访问 message[key]
    send()
    remove()
    add()
    构造函数参数=》sender type(name) content
    */


    public class Message : IEnumerable<KeyValuePair<string, object>>
    {
    private Dictionary<string, object> dictDatas = null;

    public string Name { get; private set; }
    public object Sender { get; private set; }
    public object Content { get; private set; }
    //索引器 实现
    public object this[string key]
    {
    get
    {
    if (dictDatas == null || !dictDatas.ContainsKey(key))
    {
    return null;
    }
    return dictDatas[key];
    }
    set
    {
    if (dictDatas == null)
    {
    dictDatas = new Dictionary<string, object>();
    }
    if (dictDatas.ContainsKey(key))
    {
    dictDatas[key] = value;
    }
    else {
    dictDatas.Add(key, value);
    }
    }
    }

    #region 继承ienumerator 实现
    public IEnumerator<KeyValuePair<string, object>> GetEnumerator()
    {
    if (dictDatas == null)
    {
    yield break;
    }
    foreach (KeyValuePair<string, object> kvp in dictDatas)
    {
    yield return kvp;
    }
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
    return dictDatas.GetEnumerator();
    }
    #endregion

    #region 构造函数
    public Message(string name, object sender)
    {
    Name = name;
    Sender = sender;
    Content = null;
    }
    public Message(string name, object sender, object content)
    {
    Name = name;
    Sender = sender;
    Content = content;
    }
    public Message(string name, object sender, object content, params object[] dictParams)
    {
    Name = name;
    Sender = sender;
    Content = content;
    if (dictParams.GetType() == typeof(Dictionary<string, object>))
    {
    foreach (object item in dictParams)
    {
    foreach (KeyValuePair<string, object> kvp in item as Dictionary<string, object>)
    {
    //dictDatas[kvp.Key] = kvp.Value 可能dict为空 报错
    this[kvp.Key] = kvp.Value;
    }
    }
    }
    }
    public Message(Message message)
    {
    Name = message.Name;
    Sender = message.Sender;
    Content = message.Content;
    foreach (KeyValuePair<string, object> kvp in message.dictDatas)
    {
    this[kvp.Key] = kvp.Value;
    }
    }
    #endregion

    //add remove
    public void Add(string key, object value)
    {
    this[key] = value;
    }
    public void Remove(string key)
    {
    if (dictDatas != null && dictDatas.ContainsKey(key))
    {
    dictDatas.Remove(key);
    }
    }

    //send
    public void Send()
    {
    MessageCenter.Instance.SendMessage(this);
    }


    }

  • 相关阅读:
    聚类k-means算法详解
    将pip源更换到国内镜像
    python和nltk自然语言处理
    《python自然语言处理》第三章 加工原料文本
    装载问题(最优装载问题变形)-回溯法-深度搜索
    5-2 工作分配问题 (30分)
    5-4 最小重量机器设计问题 (20分)
    7-6 部落卫队问题 (20分)
    7-5 最佳调度问题 (30分)
    原码,补码和反码(转载)
  • 原文地址:https://www.cnblogs.com/cocotang/p/5785182.html
Copyright © 2011-2022 走看看