vineri, 11 decembrie 2009

[C#] [4.0] Custom Dynamic Object - Code Sample




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

namespace ConsoleApplication1
{
class MyDynamicClass : DynamicObject
{
private Dictionary<string, object> _properties = new Dictionary<string, object>();
//TryGetMember and TrySetMember methods implement the logic to read or write a member of the dynamic object.
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
return _properties.TryGetValue(binder.Name, out result);
}
public override bool TrySetMember(SetMemberBinder binder, object value)
{
_properties[binder.Name] = value;
return true;
}

}

class Program
{

public static void UseDynamicObject(dynamic i_dynamic)
{
i_dynamic.Message = "Ala bala portocala!";

Console.WriteLine(i_dynamic.ToString());

i_dynamic.SayMessage1 = new Action(delegate {
Console.WriteLine(i_dynamic.Message);
Console.WriteLine("Say Message 1");
i_dynamic.ToString(); });
i_dynamic.SayMessage2 = new Action(
() =>
{
Console.WriteLine("SayMessage 2, the call SayMesage1");
i_dynamic.SayMessage1();
});
i_dynamic.SayMessage1();
i_dynamic.SayMessage2();
}

static void Main(string[] args)
{
dynamic _annonimus = new MyDynamicClass();
UseDynamicObject(_annonimus);
_annonimus.Message2 = "Hello from George";

Console.WriteLine(_annonimus.Message2 + ": " + _annonimus.Message);

Console.ReadLine();
}
}
}

Niciun comentariu:

Trimiteți un comentariu