私はちょうど C# 4.0 の dynamic キーワードをいじっていて、1 つのことに興味がありました。
クラスがあるとします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()
、同じことが起こります。