我對你們所有人都有一個有趣的問題。用泛型指定lambda表達式,但使用模板類型
public Func<T, int> GetLambdaFor<T>()
{
// ....
}
public void SetLambdaForAnyType(Func<?, int> lambda)
{
// ....
}
在代碼樣品上方我想看看它是在所有可能的使用SET方法而檢索使用GET方法具體類型Generic
lambda expression
指定在C#
可取代Generic
lambda expression
。
因此,讓我舉一個例子(ofcourse它展示了破C#
,我想看看它是可能的,如果是這樣,如何做到這一點):
MyClass.SetLambdaForAnyType<?>((a) => new SomeValueGenerator<?>(a).GetValue());
int generateValue = MyClass.GetLambdaFor<string>()("blah");
generateValue = MyClass.GetLambdaFor<DateTime>()(DateTime.Now);
// etc...
我希望它更有意義現在。有任何想法嗎?如果不可能,還有其他的可能性嗎?
你怎麼能得到一個字符串,並返回一個'int'?或得到一個日期時間並返回一個int?什麼是標準?你真的知道'Func'委託人在做什麼嗎?你從'GetLambdaFor'函數中返回'Func'委託,但你試圖將它分配給一個** int **變量 –
@ Selman22他知道基於提供給'GetLambdaFor'的泛型參數的委託參數。在將結果分配給一個變量之前,他用一個值來調用它,所以這部分也都是Kosher。 – Servy
@ Selman22:他的'GetLambdaFor'總是返回一個返回'int'的函數。 –