Моя цель состоит в том, чтобы использовать логику этого метода, описанного выше, но без метода, просто внутри какого-то метода.
Если метод или тип вы используете лямбда-выражения вявляется универсальным (так что у вас есть конкретный тип в контексте), тогда вы можете заставить его работать:
public void SomeMethod<T>()
{
Func<T, List<T>> createList = CreateListOfAnonymous;
var list = createList(default(T));
}
// ...
class SomeClass<T>
{
public void SomeMethod()
{
Func<T, List<T>> createList = CreateListOfAnonymous;
var list = createList(default(T));
}
}
Если ни один из них не верен для вашего кода, или вы хотите оставить T
длялямбда - открытый универсальный тип (возможно, какого-то другого типа, кроме универсальных параметров метода или класса), тогда это будет невозможно, , как упоминал Леппи .
Я нашел вВ тех случаях, когда я хотел сделать что-то подобное в прошлом (до , избегая повторения ), у меня было только несколько типов, к которым я хотел привязаться в методе.Поэтому я просто укусил пулю и создал одну конкретную версию для каждого типа, который хотел поддерживать:
public void SomeMethod()
{
Func<List<string>> createStringList = () => CreateListOfAnonymous("");
Func<List<int>> createIntList = () => CreateListOfAnonymous(0);
var list1 = createStringList();
var list2 = createStringList();
var list3 = createStringList();
var list4 = createIntList();
var list5 = createIntList();
// ...
}