c# - 在 C# 中的静态对象中保存类实例
问题描述
我们有一个“ DataAccessServiceConnector ”类,其中我们很少有与数据访问服务通信的方法。
public class DataAccessServiceConnector: IDataAccessServiceConnector
{
public async Task<HttpResponseMessage> GetDataAccessServiceResponse()
{
//Some code
return GetDataFromDataAccessService();
}
}
我们有一个接口:
public interface IDataAccessServiceConnector
{
Task<HttpResponseMessage> GetDataAccessServiceResponse();
}
并且有一个不同的类,即在静态对象中保存“DataAccessServiceConnector”类的实例。
public class ClassA
{
public static IDataAccessServiceConnector DataAccessConnector;
//Constructor of the Class
ClassA()
{
DataAccessConnector = DataAccessConnector ?? new DataAccessServiceConnector();
}
}
将类实例(即DataAccessServiceConnector)保存在静态对象(即DataAccessConnector )中是不好的做法吗?
解决方案
选项1。
如果已经存在每个人都可以访问的顶级对象,例如“程序”或“应用程序”,则可以将实例对象设置为新字段或属性。
选项 2。
从实例对象提供对实例对象的静态访问,作为静态方法/字段/属性。
或者,正如您所描述的,提供从其他任意类型对实例对象的静态访问,如果这样做对您的设计很方便的话。实际上,您所描述的阶级层次对我来说听起来很正常。
推荐阅读
- powershell - PowerShell 'q' 不会破坏 'more' 进程
- multithreading - 如何设计 Mutex 的可变集合?
- automation - cypress - 执行操作,直到元素显示在屏幕上
- dataframe - 如何获取几列的最大值并在数据框中创建一个新列
- python - Pyopengl 中是否有任何 Inbuild 函数可以在鼠标悬停在对象上时选择对象?
- mysql - 根据 IF 条件获取值
- java - Apache POI 无法替换空白 Excel 单元格
- sql - Google Big Query 检查 json 键是否存在
- flutter - 如何删除android设备中的默认填充
- video - FFMPEG - 提取两个连续的帧