I created a test project in C # and did the following:
var foo = new Class1();
Console.WriteLine(foo.MyProperty("Hello"));
Console.WriteLine(foo.get_MyProperty("Hello"));
Console.WriteLine(foo.GetType().GetProperty("MyProperty").GetGetMethod().Invoke(foo, new object[]{"Hello"}));
Console.WriteLine(foo["Hello"]);
The usual way to access an indexer in C # is the last line, and this works. Intellisense does not show the property MyProperty, and trying to call it gives a compile-time error. But it looks like I can access it through reflection.
The documentation for using indexers in C # shows code that uses an attribute to specify the name of the indexer for other languages, so I assume that C # just doesn't support calling the indexer in this way.