Método de extensão genérico: o argumento de tipo não pode ser deduzido do uso

Estou tentando criar um método de extensão genérico, que funciona em tabelas de dados digitados:

public static class Extensions
{
    public static TableType DoSomething<TableType, RowType>(this TableType table, param Expression<Func<RowType, bool>>[] predicates)
        where TableType : TypedTableBase<RowType>
        where RowType : DataRow
    {
        // do something to each row of the table where the row matches the predicates
        return table;
    }

    [STAThread]
    public static void main()
    {
        MyTypedDataSet.MyTypedDataTable table = getDefaultTable();
    }

    public static MyTypedDataSet.MyTypedDataTable getDefaultTable()
    {
        // this line compiles fine and does what I want:
        return new MyTypedDataSet.MyTypedDataTable().DoSomething<MyTypedDataSet.MyTypedDataTable, MyTypedDataSet.MyTypedRow>(row => row.Field1 == "foo");

        // this line doesn't compile :
        return new MyTypedDataSet.MyTypedDataTable().DoSomething(row => row.Field1 == "foo");
        // Error : The type arguments .. cannot be inferred from the usage
    }
}

A primeira linha funciona bem, mas é realmente feia ...
A segunda linha não compila porque o compilador não pode inferir o tipo deRowType.
Este é um método que será usado como parte de um DataLayer por muitos programadores diferentes; portanto, prefiro não precisar deles para especificar o TypeParameter.
O compilador não deveria saber queRowType é o mesmo tipo que foi usado pelo TypedTableBase?

Por razões diferentes que podem não ser óbvias neste exemplo de código, eu realmente preciso retornar a tabela de dados em sua forma original. E a razão pela qual eu precisoRowType é a expressão<Func<T, bool>>'será digitado e visto pelo InteliSence.

obrigado

questionAnswers(3)

yourAnswerToTheQuestion