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);
        }
  • 相关阅读:
    BigInteger实现除法取余
    BigDecimal介绍及BigDecimal实现四舍五入
    Jenkins的凭证管理
    Adapter(适配器)-类对象结构型模式
    singleton(单件)-对象创建型模式
    ProtoType(原型)-对象创建型模式
    Factory Method(工厂方法)-对象创建型模式
    Builder(生成器)-对象创建型模式
    Abstract Factory(抽象工厂)模式
    设计模式-序
  • 原文地址:https://www.cnblogs.com/zanxiaofeng/p/3939236.html
Copyright © 2011-2022 走看看