31 Mart 2012 Cumartesi

DynamicObject in C# 4.0


using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;

namespace ConsoleApplication1 {
   class DynamicTest : DynamicObject {
      public override bool TryInvokeMember(
            InvokeMemberBinder binder, object[] args,
            out object result) {
         var paramList = new Dictionary<string, object>();
         int i = 0;
         foreach ( object obj in args ) {
            string name = binder.CallInfo.ArgumentNames.Count > i ?
               binder.CallInfo.ArgumentNames[i] : ("param" + i);
            paramList.Add(name, obj);
            i++;
         }
         WriteCall(binder.Name, paramList);
         result = null;
         return true;
      }

      public void WriteCall(string name, Dictionary<string, object> paramList) {
         Console.WriteLine("Executing: {0}", name);
         foreach ( string key in paramList.Keys ) {
            Console.WriteLine("\t{0}: {1}", key, paramList[key]);
         }
      }
   }
   class Program {
      static void Main(string[] args) {
         dynamic cl = new DynamicTest();
         cl.MyMethodCall(count:12, value: "this is a string");
      }
   }
}



Kaynak : http://winterdom.com/2009/05/dynamicobject-in-c-40

Hiç yorum yok: