我只是在搞乱 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(),并且发生了同样的事情。