だから私はジェネリックに不慣れです。しかし、ジェネリックはコードを減らすための優れた方法のようです。これがシナリオです。私は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
}