Действительно ли возможно определить универсальную лямбду в C#?

У меня есть некоторая логика в методе, который воздействует на указанный тип, и я хотел бы создать универсальную лямбду, которая инкапсулирует логику. Это - дух того, что я пытаюсь сделать:

public void DoSomething()
{
    // ...

    Func<T> GetTypeName = () => T.GetType().Name;

    GetTypeName<string>();
    GetTypeName<DateTime>();
    GetTypeName<int>();

    // ...
}

Я знаю, что могу передать тип в качестве параметра или создать общий метод. Но мне интересно знать, может ли лямбда определить свои собственные универсальные параметры. (Таким образом, я не ищу альтернативы.) Из того, что я могу сказать, C# 3.0 не поддерживает это.

23
задан DavidRR 2 February 2018 в 13:23
поделиться

2 ответа

Невозможно создать лямбда-выражение, содержащее новые общие параметры. Можно повторно использовать общие параметры содержащих методов или типов, но не создавать новые.

16
ответ дан 29 November 2019 в 02:48
поделиться

Это возможно только тогда, когда ваш метод DoSomething является общим или его класс является общим.

0
ответ дан 29 November 2019 в 02:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: