NET中的:几乎八九不离十的实时动态|
新的动态关键字是一个伟大的方式创建和修改您的NET代码中的一个动态对象,例如,检查这段代码吗??dynamic counter = new {
sent = 0,
received = 0
};
counter.sent++;
??哦??等待??/ STRONG>,没有按,AOT的实际工作??/ EM>
,星光大道,因为即使你有一个对象声明为动态的,它仍然是一样的旧对象,它总是引擎盖下。也许不是动态的乌托邦,我们的预期。看起来像普通的OL吗??一个稍微干净的语法思考。
坏消息??/ EM>
然而,微软真棒足以让我们能够创造我们自己的动态类型由单纯从DynamicObject类继承。这篇文章看起来如何,我们可以创建一个半动态对象,由自己处理的结合方法。
我们的目标是创建一个对象,我们可以添加,删除和动态更改的值。它最终被比我们预期的更容易一些。让,AOS最低的代码,我们需要开始。{C}
注意:如果您下载上面的源代码,你可能会奇怪,为什么这些例子,唐,AOT看起来是一样的。源代码是完整的动态类,而这个职位只使用DynamicObject类的基本知识。
为了创建我们的动态对象,我们必须处理获取和设置值。我们可以用一个简单的Dictionarylt;字符串,objectgt;持有我们的价值观,直到我们需要它们。//handles getting values from our object
public override void TryGetMember(GetMemberBinder binder, out object result) {
return this._Values.TryGetValue(binder.name, out result);
}
//handles assigning values to our object
public override bool TrySetMember(SetMemberBinder binder, object value) {
this._Values.Remove(binder.name);
if (value is object) { this._Values.Add(binder.name, value); }
return true;
}
没有太多的代码,但现在我们的动态对象是一个比以前更有活力一点。现在,我们可以工作的属性轻松了许多。//create the new object
dynamic simple = new SimpleDynamic();
//add and update some values
simple.red = "#f00";
simple.green = "#0f0";
simple.count = 10;
simple.add = new Action<int>(value => simple.count += value);
//and check the values
Console.WriteLine(simple.red); // #f00
Console.WriteLine(simple.green); // #0f0
Console.WriteLine(simple.count); // 10
//invoke methods
simple.add(5);
Console.WriteLine(simple.count); // 15
当然,这个类的ISN,AOT,因为它有帮助,AOS唯一没有定期字符串索引词典,但有趣的是就看你怎么可以使的吗??代码>动态??对象只有几行代码。至于
{A},它有几个,这个类没有按,AOT有额外的功能。直接使用匿名类型,打造出整个对象=运算符的支持枚举通过成员名称字符串索引(单嵌套属性)
这里Dynamic.cs类可以做的是几个例子://create using anonymous types (and nested anonymous types)
dynamic info = new Dynamic(new {
name = "Hugo",
age = 30,
settings = new {
color = "orange",
homepage = "website.com"
}});
//add values using +=
info.create = new { value = false; }
info.nested.value.allowed = 55;
//enumeration of properties
foreach(string prop in info) {
Console.WriteLine("{0}: {1}", prop, info[prop]);
}
我,对在项目中使用这个有很多的AOD谨慎,但它真的很有趣,看到那种控制Microsoft已建成新DynamicObject类。
{A2} {五}