Como criar um método de extensão genérico?

Eu quero desenvolver um método de extensão genérica que deve organizar a seqüência em ordem alfabética, em seguida, por ordem crescente de comprimento.

Quero dizer

string[] names = { "Jon", "Marc", "Joel",
                  "Thomas", "Copsey","Konrad","Andrew","Brian","Bill"};

var query = names.OrderBy(a => a.Length).ThenBy(a => a);

Qual é o caminho para desenvolver o método de extensão genérica?

Eu tentei :

public static class ExtensionOperation
    {
        public static T[] AlphaLengthWise<T>(this T[] names)
        {
            var query = names.OrderBy(a => a.Length).ThenBy(a => a);
            return query;
        }
    }

Eu recebi :

Erro 1: T não contém definição para comprimento

Erro 2: não é possível converterSystem.Linq.IOrderedEnumerable paraT[].

questionAnswers(7)

yourAnswerToTheQuestion