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();
            }
        }
    }
  • 相关阅读:
    lsmod命令详解
    init命令详解
    runlevel 命令详解
    nohup命令详解
    nice和renice命令详解
    pstree命令详解
    ps命令详解
    crontab命令详解
    pkill命令详解
    killall命令详解
  • 原文地址:https://www.cnblogs.com/kexb/p/5646942.html
Copyright © 2011-2022 走看看