c# - 我应该什么时候在 Web 服务 (ASMX) 中实例化我的类?
问题描述
我有以下 WebServise (asmx):
public class MyService : WebService
{
private readonly UserHandler _UserHandler;
private readonly RoleHandler _RoleHandler;
public MyService()
{
_UserHandler = HandlerFactory.CreateUserHandler();
_RoleHandler = HandlerFactory.CreateRoleHandler();
}
}
每次请求都会执行 MyService() 构造函数,那么实例化 _UserHandler 和 _RoleHandler 的位置是否正确?我应该用以下实现替换我当前的代码吗?
public class MyService : WebService
{
private static readonly UserHandler _UserHandler = HandlerFactory.CreateUserHandler();
private static readonly RoleHandler _RoleHandler = HandlerFactory.CreateRoleHandler();
}
使用最后一个实现 _UserHandler 和 _RoleHandler 将只实例化一次,所有请求都将使用该实例。
谁是最好的实施?
谢谢。-
解决方案
我更喜欢构造函数。
从语言的角度来看是相同的,两者都是在构造函数上实例化的。
构造函数的形式(对我来说)更好,因为将来如果您愿意,您可以更改构造函数并注入模拟RoleHandler
和UserHandler
推荐阅读
- node.js - 使用 MERN 堆栈重置密码
- python - 如果不使用返回值,我应该在 Python 函数中返回吗?
- django - Django Window 注释使用结合 distinct 子句
- c# - 在 C# 中的用户定义类中声明列表字段和构造函数
- google-apps-script - 删除脚注
- kubernetes - Kubernetes:如何最好地自动扩展包含 websocket 连接的节点?
- android - Android Studio 版本 3.6.2 IntellijIndexingStats$Index 错误
- xpath - 如何使用 Xpath 迭代选择元素,但有一个例外?
- javascript - 使用 Flexbox 使用 overflow-x 使子 div 宽度为容器的 100%
- java - 堆栈与 Java 中的类型参数