zoukankan      html  css  js  c++  java
  • dynamic 使用

                dynamic a = new { A = 1, B = 2 };
                Console.WriteLine("a.A=" + a.A);
    
                dynamic b = new Dictionary<string,int>();
                b["A"] = 6;
                Console.WriteLine("b["A"]=" + b["A"]);
                //Following opration is not supported
                //b.A=6;
                //Console.WriteLine("b["A"]=" + b.A);
    
                var c = func();
                Console.WriteLine("c[0].A=" + c[0].A);
                //Access c[0].UnknowProperty will cause a RuntimeBinderException
    
                dynamic test = new TestClass();
                test.P1 = 34;
                test.P2 = func();
                Console.WriteLine("test.P1=" + test.P1);
                Console.WriteLine("test.P2[1].B=" + test.P2[1].B);
    
            static dynamic[] func()
            {
                return new dynamic[]{new
                {
                    A = 124,
                    B = 345
                },new
                {
                    A = 2345,
                    B = 890
                }};
            }
    
        public class TestClass
        {
            public int P1 { get; set; }
    
            public dynamic P2 { get; set; }
        }
        [Serializable]
        public class DynamicObject : IDynamicMetaObjectProvider
        {
            protected DynamicObject();
    
            public virtual IEnumerable<string> GetDynamicMemberNames();
    
            public virtual DynamicMetaObject GetMetaObject(Expression parameter);
    
            public virtual bool TryBinaryOperation(BinaryOperationBinder binder, object arg, out object result);
    
            public virtual bool TryConvert(ConvertBinder binder, out object result);
    
            public virtual bool TryCreateInstance(CreateInstanceBinder binder, object[] args, out object result);
    
            public virtual bool TryDeleteIndex(DeleteIndexBinder binder, object[] indexes);
    
            public virtual bool TryDeleteMember(DeleteMemberBinder binder);
    
            public virtual bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result);
    
            public virtual bool TryGetMember(GetMemberBinder binder, out object result);
    
            public virtual bool TryInvoke(InvokeBinder binder, object[] args, out object result);
    
            public virtual bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result);
    
            public virtual bool TrySetIndex(SetIndexBinder binder, object[] indexes, object value);
    
            public virtual bool TrySetMember(SetMemberBinder binder, object value);
    
            public virtual bool TryUnaryOperation(UnaryOperationBinder binder, out object result);
        }
  • 相关阅读:
    《软件工艺》-初评
    UI设计心得(1)
    理想生活应该是...
    OpenPOP.NET+OpenSMTP.NET=?最强.NET开源邮件组件 Mail.NET!
    Outlook应用开发(3)之插件引擎
    最近发现的几个酷.net代码
    买了几本新书,推荐一下
    一个游标简单例子
    winform中捕获程序未处理的所有异常
    DataTable的Merge方法和添加datatable到dataset
  • 原文地址:https://www.cnblogs.com/zanxiaofeng/p/3939236.html
Copyright © 2011-2022 走看看