У меня есть некоторая логика в методе, который воздействует на указанный тип, и я хотел бы создать универсальную лямбду, которая инкапсулирует логику. Это - дух того, что я пытаюсь сделать:
public void DoSomething()
{
// ...
Func<T> GetTypeName = () => T.GetType().Name;
GetTypeName<string>();
GetTypeName<DateTime>();
GetTypeName<int>();
// ...
}
Я знаю, что могу передать тип в качестве параметра или создать общий метод. Но мне интересно знать, может ли лямбда определить свои собственные универсальные параметры. (Таким образом, я не ищу альтернативы.) Из того, что я могу сказать, C# 3.0 не поддерживает это.
Невозможно создать лямбда-выражение, содержащее новые общие параметры. Можно повторно использовать общие параметры содержащих методов или типов, но не создавать новые.
Это возможно только тогда, когда ваш метод DoSomething
является общим или его класс является общим.