我正在写一个简单的概念证明,应该是什么,实质上是一个解析器生成器。你可以返回一个基于泛型类型的函数吗?
基本上我正在寻找我能写会返回一个字符串转换为给定类型的一些物体的功能的函数的方式 - 我希望能够做到在本质上是以下几点:
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