私は、本質的にはパーサージェネレータでなければならないことに対する簡単な概念証明を書いています。ジェネリック型に基づいた関数を返すことはできますか?
基本的には、指定された型のオブジェクトに文字列を変換する関数を返す関数を書く方法を探しています。つまり、以下のことを本質的に行うことができます:
Func<string, double> ConvertToDouble = BuildConverter(typeof(0.0));
明らかにこれはかなり工夫された例ですが、私が単純なバージョンを行うことができれば、より複雑なバージョンを行うことができます!
FWIW、私が最終的にしようとしているのは、クラスに値の文字列をマップすることですが、できるだけ柔軟にするために、関数を返す関数を用意します変換。機能面では、私はこのようなものしたいと思う:すべてで動作しますが、それはありません
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));
}
:最初の試みとして、
a -> (string -> a)
を、私はこれをやってみましたどのようなアプローチを取っているのか、私はちょっと気になってしまいました。だから、どんな助けでも大いに感謝されます!
あなたは、あなたの一般的な機能で_types_を探している場合、ジェネリックのポイントを逃しているように見えます。 – Oded
実行時の決定が必要な場合は、ジェネリックを使用しないでください。コンパイル時の決定が必要な場合は、 "is"を使用しないでください。 –
@Oded - 私が同意するかどうかはわかりませんが、特定の型の多型を探しています。 – MrBear