面试题答案
一键面试1. 配置依赖注入容器
- 安装 Autofac NuGet 包:
确保项目已安装 Autofac NuGet 包。在 Visual Studio 中,通过“管理 NuGet 程序包”搜索并安装
Autofac
。 - 创建模块类:
创建一个继承自
Autofac.Module
的类,用于配置依赖关系。
Imports Autofac
Public Class OrderModule
Inherits Module
Protected Overrides Sub Load(builder As ContainerBuilder)
'根据环境变量或配置文件决定使用哪个实现类
If IsProductionEnvironment() Then
builder.RegisterType(Of SqlOrderRepository).As(Of IOrderRepository)
Else
builder.RegisterType(Of MockOrderRepository).As(Of IOrderRepository)
End If
builder.RegisterType(Of OrderProcessor)
End Sub
Private Function IsProductionEnvironment() As Boolean
'这里通过判断环境变量或配置文件来确定是否是生产环境
'例如,可以读取 app.config 中的配置项或环境变量
Return ConfigurationManager.AppSettings("Environment") = "Production"
End Function
End Class
2. 使用依赖注入
- 在应用程序启动时配置容器:
在应用程序入口(例如
Main
方法所在的类)中,配置 Autofac 容器。
Imports Autofac
Imports System.Reflection
Module Program
Sub Main()
Dim builder As New ContainerBuilder()
'注册模块
builder.RegisterModule(Of OrderModule)()
'创建容器
Dim container = builder.Build()
'解析 OrderProcessor 实例
Using scope = container.BeginLifetimeScope()
Dim orderProcessor = scope.Resolve(Of OrderProcessor)()
'调用 OrderProcessor 的方法
orderProcessor.ProcessOrder()
End Using
End Sub
End Module
3. 业务逻辑类 OrderProcessor
Public Class OrderProcessor
Private ReadOnly _orderRepository As IOrderRepository
Public Sub New(orderRepository As IOrderRepository)
_orderRepository = orderRepository
End Sub
Public Sub ProcessOrder()
'使用 _orderRepository 访问订单数据并进行处理
Dim orders = _orderRepository.GetOrders()
'处理订单逻辑
End Sub
End Class
4. IOrderRepository
接口及实现类
Public Interface IOrderRepository
Function GetOrders() As List(Of Order)
End Interface
Public Class SqlOrderRepository
Implements IOrderRepository
Public Function GetOrders() As List(Of Order) Implements IOrderRepository.GetOrders
'从 SQL 数据库获取订单数据
Return New List(Of Order)()
End Function
End Class
Public Class MockOrderRepository
Implements IOrderRepository
Public Function GetOrders() As List(Of Order) Implements IOrderRepository.GetOrders
'返回模拟订单数据
Return New List(Of Order)()
End Function
End Class
以上代码示例展示了如何在 Visual Basic 项目中使用 Autofac 依赖注入框架,根据不同的环境动态注入 IOrderRepository
的正确实现类。IsProductionEnvironment
方法用于判断当前环境,实际应用中可根据具体需求从配置文件或环境变量获取相关信息。