私はAPIControllersを解決するためにDryIOC.WebAPIを使用しています。DryIOC WebAPIフォールバックコントローラ
WebAPIのConfigがこれです:私はIOCコンテナにマッピングを作成することを忘れまで
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
config.EnableCors();
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Startup.IocContainer.WithWebApi(config);
Startup.IocContainer.RegisterWebApiControllers(config);
}
}
ITSは、偉大な作業します。この場合、Dependencyリゾルバは、DryIOCを使用してAPIControllerのインスタンスを作成することができません。
これが発生すると、デフォルトのWebAPIリゾルバに戻り、「デフォルトのコンストラクタがありません」というエラーが表示されます。
これは私にとって望ましくない動作です。 DryIOCの解決に失敗した場合、私はそこで停止する必要があります。デフォルト実装へのフォールバックはなく、デフォルトコンストラクタについての不正確なメッセージもありません。私はDryIOCが解決できないタイプを知りたいので、修正することができます。
どうすればこの問題を解決できますか? Microsoftのドキュメントによると
あなたはそれをDryIOCに渡してそこで停止する前にデフォルトリゾルバを自分で上書きすることができます – Nkosi
私はここでDryIOCプルリクエストを作成しました:https://bitbucket.org/dadhi/dryioc/pull-requests/15/changed-the- resolutionId-throw/diff – reach4thelasers
で、DryIOCフレームワークの変更はかなり厳しいものになっています。あなたは、Web APIが許す拡張性を利用するべきです。 DryIOCソースがデフォルトのリゾルバを置き換えるのではなく、どのようにラップするのかを見て、私は自分の答えを編集して、DryIOCResoverをラップして、あなたが望むエラーを投げる方法を示します。 – Nkosi