Методы GetType()
, ToString()
и GetHashCode()
все определены в DynamicObject
(поскольку он наследуется от System.Object
).Когда .NET переходит к вызову этих методов, он просто вызывает их напрямую, так как они определены для объекта, и пропускает вызов на TryInvokeMember
.
. Вы можете увидеть это в действии, если попытаетесь вызватьдругой метод, например Substring()
, и вы увидите, что TryInvokeMember
для DynamicWeirdness
действительно вызывается.
Вместо переопределения TryInvokeMember
для DynamicWeirdness
для возврата другого типа, вы можете простосоздайте новый метод GetType()
для DynamicWeirdness
.
public new Type GetType()
{
return this.referencetype;
}
Для GetHashCode()
и ToString()
вы можете переопределить эти элементы на DynamicWeirdness
, так как они помечены как виртуальные.