

示例
1. 创建接口和实现类
首先,我们需要创建一个接口和它的实现类。
接口 IMyDependency
// Interfaces/IMyDependency.cs
namespace DependencyInjectionSample.Interfaces
{
public interface IMyDependency
{
void WriteMessage(string message);
}
}
实现类 MyDependency
// Services/MyDependency.cs
namespace DependencyInjectionSample.Services
{
public class MyDependency : IMyDependency
{
public void WriteMessage(string message)
{
Console.WriteLine($"Message: {message}");
}
}
}
2. 配置依赖注入
接下来,在Program.cs文件中配置依赖注入。
Program.cs
using DependencyInjectionSample.Interfaces;
using DependencyInjectionSample.Services;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
// 注册Scoped生命周期的服务
builder.Services.AddScoped<IMyDependency, MyDependency>();
var app = builder.Build();
3. 使用依赖注入
最后,在Razor Page模型中使用注入的依赖。
Index2Model.cshtml.cs
// Pages/Index2Model.cshtml.cs
namespace DependencyInjectionSample.Pages
{
public class Index2Model : PageModel
{
private readonly IMyDependency _myDependency;
public Index2Model(IMyDependency myDependency)
{
_myDependency = myDependency;
}
public void OnGet()
{
_myDependency.WriteMessage("Index2Model.OnGet");
}
}
}



过滤器
-
授权过滤器:
- 用于在执行动作之前进行权限验证,确保只有经过授权的用户才能访问特定的动作。
-
资源过滤器:
- 在执行动作之前和之后执行,可以用于处理资源级别的逻辑,如日志记录、性能监控等。
-
动作过滤器:
- 在执行动作方法之前和之后执行,可以用于修改输入参数或输出结果,如验证模型、缓存结果等。
-
异常过滤器:
- 用于捕获并处理动作执行期间抛出的异常,确保应用程序的稳定性和用户体验。
-
结果过滤器:
- 在执行动作结果之前和之后执行,可以用于修改动作结果,如压缩响应、添加HTTP头等


被折叠的 条评论
为什么被折叠?



