Вам необходимо проверять тип изнутри func.Value
, а не Lazy<T,TMeta>
, обертывающего его. Попробуйте:
Func<int> lambdaFunc = func.Value;
Delegate del = lambdaFunc;
string version = del.Method.ReflectedType.Assembly.GetName().Version.ToString();
Однако, поймите, что это оценит Lazy<T>
на данный момент - но это необходимо, потому что объект, где вы пытаетесь получить тип, не был сконструирован, пока вы не оцените это.