我正在注入一个RestSharp IRestClient
实例来进行API调用:
kernel.Bind<IRestClient>()
.ToMethod(context => new RestClient("http://localhost:63146/api/"));
但是,我还需要使用HttpBasicAuthenticator
进行身份验证。我目前正在注射这个IAuthenticator
:
kernel.Bind<IAuthenticator>()
.ToMethod(context => new HttpBasicAuthenticator("user", "password"));
有没有办法将两者合并,这样我只需要注入IRestClient
并且默认情况下附加了身份验证器?
例如,我尝试过类似的事情:
kernel.Bind<IRestClient>()
.ToMethod(context =>
new RestClient("http://localhost:63146/api/")
.Authenticator = new HttpBasicAuthenticator("user", "password"));
但那不是编译。
答案 0 :(得分:1)
ToMehtod
采用常规Func<IContext, T>
,您不仅可以创建简单对象,还可以编写任何指定复杂函数。
因此,您可以轻松地将两个调用与:
组合在一起kernel.Bind<IRestClient>()
.ToMethod(context => {
var client = new RestClient("http://localhost:63146/api/");
client.Authenticator = new HttpBasicAuthenticator("user", "password");
return client;
});