我只是在搞乱 C# 4.0 动态关键字,并对一件事感到好奇。
假设我有一堂课DynamicWeirdness : DynamicObject
在它里面我有一个名为的字段reference
,它也是类型dynamic
。和一个名为的字段referencetype
类型Type
这是我的构造函数:
public DynamicWeirdness(object reference)
{
this.reference = reference;
this.referencetype = reference.GetType();
}
如果我尝试这个:
public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
{
if (binder.Name == "GetType" && args.Length == 0)
{
result = referencetype;
return true;
}
result = null;
return false;
}
当我调用GetType()
一个DynamicWeirdness
对象时,它只是忽略我的调用并返回{Name = "DynamicWeirdness" FullName = "Dynamic1.DynamicWeirdness"}
。为什么?
我已经尝试过ToString()
, GetHashCode()
,并且发生了同样的事情。