Вопрос, кажется, здесь:
// any way we can get the compiler to infer IThing<int> ?
var thing = f.Create("one");
Нет.Вам нужно было бы явно указать тип:
var thing = f.Create<int>("one");
Невозможно вывести тип возвращаемого значения без использования параметра, специально используемого в методе.Компилятор использует параметры, переданные методу, для вывода типа T
, и в этом случае это однострочный параметр без параметров типа T
.Таким образом, нет никакого способа сделать это для вас.