zoukankan      html  css  js  c++  java
  • c# dynamic的属性是个变量

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApplication3
    {
        public class Student : System.Dynamic.DynamicObject
        {
          
            public override bool TryGetMember(System.Dynamic.GetMemberBinder binder, out object result)
            {
                if (map != null)
                {
                    string name = binder.Name;
                    object value;
                    if (map.TryGetValue(name, out value))
                    {
                        result = value;
                        return true;
                    }
                }
                return base.TryGetMember(binder, out result);
            }
    
            System.Collections.Generic.Dictionary<string, object> map;
    
            public override bool TryInvokeMember(System.Dynamic.InvokeMemberBinder binder, object[] args, out object result)
            {
                if (binder.Name == "set" && binder.CallInfo.ArgumentCount == 2)
                {
                    string name = args[0] as string;
                    if (name == null)
                    {
                        //throw new ArgumentException("name");  
                        result = null;
                        return false;
                    }
                    if (map == null)
                    {
                        map = new System.Collections.Generic.Dictionary<string, object>();
                    }
                    object value = args[1];
                    map.Add(name, value);
                    result = value;
                    return true;
    
                }
                return base.TryInvokeMember(binder, args, out result);
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                dynamic t = new Student();
                string @a = "ggff";
                t.set(@a, "galrj");
                Console.WriteLine(t.ggff);
    
    
                Console.ReadKey();
            }
        }
    }
  • 相关阅读:
    Java 对文件的操作
    快速排序算法
    Java 时间和字符换的处理
    Redis 数据结构之Keys
    [转] Redis系统性介绍
    【转】JAVA 接口
    [转] Python 代码性能优化技巧
    几道关于面试的题目
    随手笔记2
    随手笔记
  • 原文地址:https://www.cnblogs.com/kexb/p/5646942.html
Copyright © 2011-2022 走看看