首页 > 其他 > 详细

dynamic 使用

时间:2014-08-27 14:25:07      阅读:330      评论:0      收藏:0      [点我收藏+]
            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);
    }

 

dynamic 使用

原文:http://www.cnblogs.com/zanxiaofeng/p/3939236.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!