だから私はジェネリックに不慣れです。しかし、ジェネリックはコードを減らすための優れた方法のようです。これがシナリオです。私はMVCWebAPIを持っています。
http://www.google.com/{controller}/{chartType}/{id} 
注:idはオプションです
同様のオブジェクトを返すチャートタイプがいくつかあります。
- HourlyDeviceChart
 - HourlyUsersCharrt
 - HourlyAvgProcessingTimeなど。
 
チャートタイプパラメータを評価し、対応するアクションを実行するメソッドを1つだけ作成したいと思います。8または10の方法の代わりに。
デザインにリファクタリングが必要な場合は、受け入れます。私は提案を受け入れています。ここでの考え方は、いくつかのコードを減らすことです。Web APIで10個のメソッドを公開し、次に別のクラスでさらに10個の対応するメソッドを公開するのは嫌です。冗長に思えます。
いつものようにあなたの提案は大歓迎です!
APIによって公開されるメソッド:
IEnumerable<T> GetChart(string chartType)
{
    switch(chartType)
    {
        case "DeviceChart":
        return repository.HourlyDeviceChart();
        break;
        case "UserChart":
         return repository.HourlyUsersChart();
         break;
    }
}
//Then the class that handles all the work would look something like the below
IEnumerable<HourlyDeviceChart> HourlyDeviceChart()
{
    // select appropriate items from the queue
    // populate HourlyDeviceChart object
    // add object to list
    // return HourlyDeviceChart list
}
IEnumerable<UserDeviceChart> HourlyUsersChart()
{
    // do more of the same
}