c# - 在父类中调用带参数的类构造函数
问题描述
如您所见,我有这门课:
public class mybaseclass
{
public string token = "";
private readonly HttpContextAccessor iHTTP;
public mybaseclass([FromServices]HttpContextAccessor IHTTP)
{
//this.httpContext = httpContext;
iHTTP = IHTTP;
}
public mybaseclass()
{
}
protected Task<HttpRequestMessage> CreateHttpRequestMessageAsync(CancellationToken cancellationToken)
{
// var t = null;
try
{
// iHTTP.HttpContext.Request.Cookies[key]
var t = iHTTP.HttpContext.Request.Cookies["Authorization"];
if (t == null)
{
token = t;
}
}
catch(Exception aaa)
{
}
var msg = new HttpRequestMessage();
// SET THE BEARER AUTH TOKEN
msg.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
return Task.FromResult(msg);
}
}
这个类在这个类中被调用:
public partial class Default1Client : mybaseclass, IDefault1Client
{
private string _baseUrl = "";
private System.Lazy<Newtonsoft.Json.JsonSerializerSettings> _settings;
public Default1Client(string baseUrl)
{
BaseUrl = baseUrl;
_settings = new System.Lazy<Newtonsoft.Json.JsonSerializerSettings>(CreateSerializerSettings);
}
// other part of code
}
我的问题是当我调用 Default1Client 时,该类调用了没有任何参数的 mybaseclass 构造函数,但我需要httpcontextaccessor
调用构造函数
解决方案
修改您的构造函数以通过它:
public Default1Client(string baseUrl, HttpContextAccessor contextAccessor) : base(contextAccessor)
{
//etc....
并在您注册时填充它:
services.AddScoped<IDefault1Client>(provider => { return new Default1Client
(
"localhost:44381",
provider.GetService(typeof(HttpContextAccessor)) as HttpContextAccesor
)});
推荐阅读
- php - 将 mysql 查询转换为 Eloquent 查询生成器
- html - 添加`
- powershell - 如何将变量传递给满足 ValidateSet 的函数?
- react-native - expo 构建 web 页面路径
- reactjs - 使用 React 从 CMS 获取数据的最佳方法是防止加载时间?
- vue.js - vue-i18n 延迟加载正在加载所有语言环境
- java - 在 Jpanel 中放置 7 个组件,前 6 个分 3 行 2 列。第三行的最后一个,但在列之间
- c++ - 成员声明中的模板类类型别名替换失败
- java - 使用 Java,如何获得 Huffman 树的编码树?
- python - 如何从用户输入中读取直到在 Python 中找到换行符?