そのようなシグネチャを持つジェネリック メソッドがあるとします。
T Obfuscate<T>(T value) where T : IConvertible
IConvertible
このメソッドが単純な値の型と文字列を消化できるように、型の制約を設定しています。列挙型も提供できることを少し忘れましょう...
実引数の型をチェックして正しい処理を行うような実装は避けたい。
// Please no GOD METHODS
public T Obfuscate<T>(T value)
where T : IConvertible
{
if (value is int)
{
...
}
if (value is string)
{
...
}
}
これは確かに、特定の実装プロバイダーを呼び出す必要があるファクトリ メソッドのにおいがしますが、それでも型チェックが必要です。
このシナリオに最適な方法(できれば一般的なアプローチ)をお勧めしますか?
なぜジェネリックメソッドなのですか?
コードの呼び出しでメソッドの戻り値をキャストする必要がなく、常に正しい型を返すように、ジェネリック メソッドを使用することにしました。