我正在寫一個簡單的概念證明,應該是什麼,實質上是一個解析器生成器。你可以返回一個基於泛型類型的函數嗎?
基本上我正在尋找我能寫會返回一個字符串轉換爲給定類型的一些物體的功能的函數的方式 - 我希望能夠做到在本質上是以下幾點:
Func<string, double> ConvertToDouble = BuildConverter(typeof(0.0));
很明顯,這是一個非常人爲的例子 - 但如果我可以做簡單的版本,那麼我應該可以做更復雜的版本!我最終試圖做的是將一個值的字符串映射到一個類,但爲了使它儘可能靈活,我想通過一個函數返回一個函數來做到這一點轉換。在功能方面,我覺得我想要的東西,看起來像這樣:
a -> (string -> a)
作爲第一次嘗試,我試着這樣做:
public static Func<string, T> BuildParser<T>(T t)
{
if (t is String)
return new Func<string, T>(x => x.ToString());
if (t is double)
return new Func<string, T>(x => double.Parse(x));
}
這並不在所有的工作,但它讓我感覺有點卡住,我應該採取什麼方法 - 所以任何幫助都將不勝感激!
你似乎缺少泛型的點,如果你在你的通用功能尋找_types_。 – Oded 2010-12-15 17:17:40
如果您想要運行時決策,那麼您不應該使用泛型。如果你想編譯時決定,那麼你不應該使用「是」。 – 2010-12-15 17:18:20
@Oded - 我不確定我是否同意,我只是在尋找特定類型的多態。 – MrBear 2010-12-16 13:00:34