public override bool CanConvert()

in src/JetBrains.Space.Common/Json.Serialization/UrlParameterConverter.cs [41:78]


    public override bool CanConvert(Type objectType)
        => typeof(IUrlParameter).IsAssignableFrom(objectType);
        
    /// <inheritdoc />
    [CanBeNull]
    public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        if (reader.TokenType == JsonTokenType.Null) return null;

        // Read permission scope
        if (typeToConvert == PermissionScopeType && reader.TokenType == JsonTokenType.String)
        {
            var permissionScopeString = reader.GetString();
            return new PermissionScope(permissionScopeString) as T;
        }

        // Read based on className
        var readerAtStart = reader;
            
        using var jsonDocument = JsonDocument.ParseValue(ref reader);
        var jsonObject = jsonDocument.RootElement;
    
        var className = jsonObject.GetStringValue("className");
        if (!string.IsNullOrEmpty(className))
        {
            if (ClassNameTypeUtility.TryResolve(
                    className: className, 
                    spaceDotNetCSharpTypeName: ClassNameTypeUtility.SpaceDotNetClientNamespace + "." + typeToConvert.Name + "+" + CSharpIdentifier.ForClassOrNamespace(className) + ", " + ClassNameTypeUtility.SpaceDotNetClientAssemblyName,
                    targetType: out var targetType))
            {
                return JsonSerializer.Deserialize(ref readerAtStart, targetType, options) as T;
            }
        }

        // Read, but return null for other cases
        JsonDocument.ParseValue(ref readerAtStart).Dispose();
        return null;
    }