When remote method's return type is IDictionary[], call this method will throw InvalidCastException with message "Result argument has invalid type". Apparently, the bug is due to CMapDeserializer which does report correctly its type. Thus adding method:
public override Type GetOwnType()
{
return m_type;
}
in CmapDeserializer will fix the issue.