String.Format("{0:foo}", object);
В конечном итоге передаст "foo"
в object.ToString(string format);
, поэтому имеет смысл разработать аргументы, которые ваш метод ToString(string format)
принимает во внимание. В вашем примере
String.Format("{0:EI - EE}", object);
приведет к тому, что "EI - EE" будет передан методу ToString объекта, так что это может работать, как вы описываете, но может иметь смысл ограничить формат одним представлением за раз, например,
String.Format("{0:EI} - {0:EE}", object);
будет способом получить "CAT994-61" в качестве вывода, и ваш метод ToString () может быть проще
public override string ToString(string myFormat)
{
string str = null;
switch (myformat.ToLower())
{
case "ee": str = this.equipment; break;
case "ei": str = this.description; break;
case "ed": str = this.id; break;
default: str = this.ToString(); break;
}
return str;
}
Если вы сократите спецификаторы формата до отдельных букв, это будет более соответствовать тому, как другие объекты обрабатывают форматы ToString.