У меня есть набор методов расширения, которые я регулярно использую для различных задач пользовательского интерфейса. Я обычно определяю их для запуска объекта типа, хотя внутри них я обычно преобразовываю их в типы строк.
public static string FormatSomething(this object o)
{
     if( o != null )
     {
          string s = o.ToString();
          /// do the work and return something.
     }
     // return something else or empty string.
}
Основная причина, по которой я использую тип объекта, а не строку, - это сохранить себя в пользовательском интерфейсе из-за необходимости делать <%#Eval("Phone").ToString().FormatSomething()%>, когда я могу сделать <%#Eval("Phone").FormatSomething()%> вместо этого.
Итак, хорошо ли с точки зрения производительности создавать все методы расширения для объекта или я должен преобразовывать их в строковые (или соответствующие) типы на основе того, что делает метод расширения?