您的位置:首页 > 编程语言 > C#

c# dynamic的属性是个变量

2016-07-06 15:07 399 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication3
{
public class Student : System.Dynamic.DynamicObject
{

public override bool TryGetMember(System.Dynamic.GetMemberBinder binder, out object result)
{
if (map != null)
{
string name = binder.Name;
object value;
if (map.TryGetValue(name, out value))
{
result = value;
return true;
}
}
return base.TryGetMember(binder, out result);
}

System.Collections.Generic.Dictionary<string, object> map;

public override bool TryInvokeMember(System.Dynamic.InvokeMemberBinder binder, object[] args, out object result)
{
if (binder.Name == "set" && binder.CallInfo.ArgumentCount == 2)
{
string name = args[0] as string;
if (name == null)
{
//throw new ArgumentException("name");
result = null;
return false;
}
if (map == null)
{
map = new System.Collections.Generic.Dictionary<string, object>();
}
object value = args[1];
map.Add(name, value);
result = value;
return true;

}
return base.TryInvokeMember(binder, args, out result);
}
}
class Program
{
static void Main(string[] args)
{
dynamic t = new Student();
string @a = "ggff";
t.set(@a, "galrj");
Console.WriteLine(t.ggff);

Console.ReadKey();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: