对象数据关联扩展

作者: 2b75747cf703 | 来源:发表于2016-08-01 10:23 被阅读72次

经常会在代码中进行数据关联,比如某张图片点击要打开某个链接。
写了一个扩展,任何对象可以和任何数据关联。

using System.Collections.Generic;
using UnityEngine;

namespace Babybus.Framework.ExtensionMethods
{
    public static class ObjectExtension
    {
        private static Dictionary<object, Dictionary<string, object>> dictionary = new Dictionary<object, Dictionary<string, object>>();

        public static bool HasData(this object obj, string key)
        {
            return dictionary.ContainsKey(obj);
        }

        public static void SetData(this object obj, string key, object value)
        {
            if (!dictionary.ContainsKey(obj))
                dictionary.Add(obj, new Dictionary<string, object>());

            dictionary[obj][key] = value;
        }

        public static T GetData<T>(this object obj, string key, T defaultValue = default(T))
        {
            if (!dictionary.ContainsKey(obj))
                return defaultValue;

            return (T)dictionary[obj][key];
        }

        public static void DeleteData(this object obj, string key)
        {
            if (!dictionary.ContainsKey(obj))
                return;

            var data = dictionary[obj];
            if (data.ContainsKey(key))
                data.Remove(key);
        }

        public static void DeleteAll(this object obj)
        {
            if (dictionary.ContainsKey(obj))
                dictionary.Remove(obj);
        }
    }
}

相关文章

  • 对象数据关联扩展

    经常会在代码中进行数据关联,比如某张图片点击要打开某个链接。写了一个扩展,任何对象可以和任何数据关联。

  • 类扩展&关联对象

    我们在前面的文章讲到类和分类的加载原理,今天我们来探索下类扩展和关联对象。 在这之前我们下来看看类扩展和分类的区别...

  • 类扩展和关联对象

    分类和类扩展 在OC类的加载[https://www.jianshu.com/p/0d728be5b598]中我们...

  • iOS 类扩展&关联对象

    前言 前面几篇文章主要分析了类的加载过程,那么这篇文章主要分析分类中属性的存储,也就是大家常说的关联对象,以及类扩...

  • 探索AssociatedObject关联对象的内部实现

    AssociatedObject关联对象 为什么要引入关联对象? 一般我们需要对现有的类做扩展,可以通过继承、类别...

  • 给UIAlertView添加block实现

    使用"关联对象"(Associated Object)存放自定义数据 可以给某对象关联许多其它对象,这些对象通过"...

  • OC底层原理探索—扩展和关联对象

    这篇文们来讲解下扩展和关联对象 扩展分析 首先我们先在main.m文件中实现扩展 然后clang -rewrite...

  • 《Effective Objective-C 2.0 》 阅读笔

    第10条:在既有类中使用关联对象存放自定义数据 1. 关联对象 可以给某对象关联许多其他对象,这些对象通过“键”来...

  • Effective Objective-C 2.0 读书笔记二(

    10. 在既有类中使用关联对象存放自定义数据 注意关键词“关联对象”,就是把两个对象关联起来,例如把对象B关联到对...

  • Swift在扩展中关联对象

    原文在这里, 转载请贴原文链接 Objective-C 最让人诟病的也许就是不能给已有类添加属性, 但是可以通过 ...

网友评论

    本文标题:对象数据关联扩展

    本文链接:https://www.haomeiwen.com/subject/wnuxsttx.html