【发布时间】:2021-12-07 01:29:11
【问题描述】:
我正在使用.net core api 5。我想要实现的是根据查询字符串填充一个对象。然后,当这个对象被填充时,我想把这个对象注入到需要该信息的类中。
我现在的做法是创建一个类,并将这个类注册为单例。
接下来,我创建了一些中间件来读取查询字符串,获取注册的单例并设置它的值:
public class SetDataMiddleware
{
private readonly RequestDelegate _next;
public SetDataMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
if (context.Request.Query.ContainsKey("slug"))
SetValues(context);
await _next(context);
}
private void SetValues(HttpContext context)
{
var slugValue = context.Request.Query["slug"];
var objectWithValues = (ValuesObject)context.RequestServices.GetService(typeof(ValuesObject));
var dataGetter = (IGetDataBySlug)context.RequestServices.GetService(typeof(IGetDataBySlug));
var retreivedData = dataGetter.Get(slugValue);
objectWithValues.Address = new Address
{
City = retreivedData.Address.City,
Street = retreivedData.Address.Street,
Zipcode = retreivedData.Address.Zipcode,
};
}
}
接下来我可以在任何我想访问它的值的地方注入ValuesObject。
虽然这很好用,但我想知道是否有更好的,也许是更简洁的方法来实现同样的目标。
【问题讨论】:
标签: c# .net-core asp.net-core-webapi