私はこれが意味をなさないことを誓います。
これHttpRouteCollection
をWebAPIから取得した場合、特に、いくつかのカスタムルートタイプに基づいてフィルタリングしていますIAttributeRoute
。私は使用していますhttpRoutes.OfType<IAttributeRoute>()
が、ループは要素がないように動作しています。
明確にするために、このループがヒットすると、コレクション全体がHttpAttributeRoute
直接実装するタイプになりますIAttributeRoute
。さらに、私は通常ので動作している同じループを持っていますRouteCollection
。
これは機能しません:
foreach (IAttributeRoute route in GlobalConfiguration.Configuration.Routes.OfType<IAttributeRoute>()) {
if (!string.IsNullOrWhiteSpace(route.RouteName) && !json.ContainsKey(route.RouteName)) {
json.Add(route.RouteName, "/" + route.Url);
}
}
それでも、これは正常に機能します。
foreach (var route in GlobalConfiguration.Configuration.Routes)
{
if (route is IAttributeRoute) // uhhhh?
{
var r = route as IAttributeRoute;
if (!string.IsNullOrWhiteSpace(r.RouteName) && !json.ContainsKey(r.RouteName))
{
json.Add(r.RouteName, "/" + r.Url);
}
}
}
私は嘘をついていないことを誓います、それは後者のコードでのみ機能します。私が言ったように、通常のルートコレクションでこれを行うことは問題ありません。通常のルートコレクションには、だけIAttributeRoute
でなく他のタイプもありますが、HttpRouteCollectionには、現在の状態では、のみがありIAttributeRoute
ます(将来的には異なるタイプのルートを持つ可能性があります)。それが要因でしょうか?
私は何かが足りないのですか、それともOfType
私が内部で行っていることを行っていませんか?