В С# я пытаюсь написать код, где я буду создавать делегат Func, который сам по себе является общим. Например, следующий (не общий) делегат возвращает произвольную строку:
Func<string> getString = () => "Hello!";
Я, с другой стороны, хочу создать родовое, которое действует подобно общим методам. Например, если я хочу, чтобы общий Func возвращал значение по умолчанию (T) для типа T. Я бы предположил, что я пишу код следующим образом:
Func<T><T> getDefaultObject = <T>() => default(T);
Тогда я бы использовал его как
getDefaultObject<string>()
, который вернет null, и если бы я должен был написать getDefaultObject<int>()
, он вернул бы 0.
Этот вопрос - не просто академическое упражнение. Я нашел множество мест, где я мог бы использовать это, но я не могу правильно получить синтаксис. Это возможно? Существуют ли библиотеки, предоставляющие такую функциональность?