C# 4.0:动态,继承自 DynamicObject
假设我有这个:
dynamic foo = new Foobar();
我有这个:
public class Foobar : DynamicObject
{
}
问题是,是否可以覆盖 DynamicObject
的成员,以便此代码:
string name = new Foobar().Name
在运行时不会抛出 Exception
-时间?如果 Name
不是成员,我想返回 name
的 default
。
可能的?我需要覆盖什么?
Let's say I have this:
dynamic foo = new Foobar();
And I have this:
public class Foobar : DynamicObject
{
}
The question is, is it possible to override members of DynamicObject
so that this code:
string name = new Foobar().Name
Does not throw an Exception
at run-time? I want to return default
for name
's if Name
is not a member.
Possible? What do I need to override?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
重写 TryGetMember(和 TrySetMember)。从 DynamicObject 类派生的类可以重写此方法来指定操作的动态行为,例如获取属性的值。
http://msdn.microsoft.com/en-us/library /system.dynamic.dynamicobject.aspx
http://msdn.microsoft.com/en-us /library/system.dynamic.dynamicobject.trygetmember.aspx
Override TryGetMember (and TrySetMember). Classes derived from the DynamicObject class can override this method to specify dynamic behavior for operations such as getting a value for a property.
http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject.aspx
http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject.trygetmember.aspx
像这样的事情:
Something like this:
您需要覆盖 TryGetMember。只需设置为始终返回 true,并在成员不存在时提供默认值。
You need to override TryGetMember. Just set to always return true, and provide the default if the member does not exist.