zoukankan      html  css  js  c++  java
  • C#新特性, dynamic, ExpandObject

    http://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject.aspx

    using System;
    using System.Collections.Generic;
    using System.Dynamic;
    using System.Linq;
    using System.Text;
    
    namespace TestCSharp
    {
        class ExampleClass
        {
            public ExampleClass() { }
            public ExampleClass(int v) { }
    
            public void exampleMethod1(int i) {
                Console.WriteLine(i);
            }
    
            public void exampleMethod2(string str) {
                Console.WriteLine(str);
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
    
                ExampleClass ec = new ExampleClass();
                // The following call to exampleMethod1 causes a compiler error 
                // if exampleMethod1 has only one parameter. Uncomment the line
                // to see the error.
                //ec.exampleMethod1(10, 4);
    
                dynamic dynamic_ec = new ExampleClass();
                // The following line is not identified as an error by the
                // compiler, but it causes a run-time exception.
                dynamic_ec.exampleMethod1(10);
    
                // The following calls also do not cause compiler errors, whether 
                // appropriate methods exist or not.
                dynamic_ec.exampleMethod2("some argument");
                //dynamic_ec.nonexistentMethod();
    
                dynamic i = 10;
                ++i;
                
                Console.WriteLine(i+i);
    
                
                dynamic sampleObject = new ExpandoObject();
    
                // Create a new event and initialize it with null.
                sampleObject.sampleEvent = null;
    
                // Add an event handler.
                sampleObject.sampleEvent += new EventHandler(SampleHandler);
    
                // Raise an event for testing purposes.
                sampleObject.sampleEvent(sampleObject, new EventArgs());
                sampleObject.name = "ww";
                sampleObject.age = 23;
                Console.WriteLine("name={0},age={1}", sampleObject.name, sampleObject.age);
                ToStr(sampleObject);
               
                Console.ReadKey();
            }
            // Event handler.
            static void SampleHandler(object sender, EventArgs e)
            {
                Console.WriteLine("SampleHandler for {0} event", sender);
            }
    
            static void ToStr(dynamic sampleObject)
            {
                Console.WriteLine("ToStr:name={0},age={1}", sampleObject.name, sampleObject.age);
            }
        }
    }
    

      

  • 相关阅读:
    leetcode 141 环形链表
    [转载]Tensorflow中reduction_indices 的用法
    SIFT特征原理与理解
    numpy切片和布尔型索引
    IPython的使用
    [文献阅读]基于卷积神经网络的高光谱图像深度特征提取与分类
    验证码校验
    防止表单重复提交
    MyBatis 一对一,一对多,多对多
    MySQL基础内容
  • 原文地址:https://www.cnblogs.com/wucg/p/3852501.html
Copyright © 2011-2022 走看看