Это свойство индексатора . Он позволяет вам «обращаться» к вашему классу напрямую по индексу, так же, как и к массиву, списку или словарю.
В вашем случае вы можете получить что-то вроде:
public class MyTypes
{
public MyType this[string name]
{
get {
switch(name) {
case "Type1":
return new MyType("Type1");
case "Type2":
return new MySubType();
// ...
}
}
}
}
Тогда вы сможете использовать это как:
MyTypes myTypes = new MyTypes();
MyType type = myTypes["Type1"];