Square bracket syntax in function's parameter in C#?

asp.net, c#

Solution

That's applying the `QueryStringAttribute` attribute to the parameter `categoryId`. It's just an attribute, just like the ones you're probably more used to seeing on methods or classes, like this:

[STAThread]
static void Main()
{
}

In this case, presumably some part of the framework (I'm not an ASP.NET developer, so I can't point out exactly what) is using reflection to find all the methods, find any `QueryStringAttribute` values applied to the parameters, and then matching the names within those attributes with the names in the query string, then extracting the matching values to pass into the method call (again using reflection).

Problem

I'm learning ASP.NET and stumbled upon this method declaration: ``` public IQueryable<Product> GetProducts([QueryString("id")] int? categoryId) {.....} ``` The tutorial said `categoryId` will be equal to query string "id" (From URL, like &id=5) but the question is what is `[QueryString("id")]` syntax called? Is this usable outside ASP.NET and what will the application of this be?

Original source