我们有一个带有 QCServiceLog 类的外部项目,该类具有由 Unity 解析的 ILogging 依赖项。\n但 QCServiceLog 是一个 Singleton 类,如以下示例所示:
\nprivate readonly ILogging _logging = null;\n\nprivate static QCServiceLog _instance = null;\npublic static QCServiceLog Instance\n{\n get\n {\n return _instance;\n }\n}\n\npublic QCServiceLog(ILogging logging)\n{\n _logging = logging;\n if (_instance == null)\n {\n _instance = this;\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n我们正在尝试使用它,在我们的解决方案中,我们进行了如下注册:
\nuc.RegisterType<ILogging, QCFileManager>(new ContainerControlledLifetimeManager());\nRun Code Online (Sandbox Code Playgroud)\n但由于 QCServiceLog 是单例,我们相信代码永远不会通过构造函数,因此 _instance 永远不会实例化。\n我们使用它来执行以下操作:
\nQCServiceLog.Instance.Log(ex);\nRun Code Online (Sandbox Code Playgroud)\nSingleton 是否正确实现?我们相信它\xc2\xb4s永远不会做新的QCServiceLog。
\n你怎么认为?我们可以在不更改外部项目的情况下做些什么吗?\n你可以想象的例外是:
\n你调用的对象是空的。
\n我将衷心感谢您的帮助!
\n为了简化我的问题,假设我有 2 个组件:一个表格和一个单元格组件。
当我将鼠标悬停在某种单元格上时,我会在它旁边显示一个铅笔图标,这样我就可以就地编辑该值。
<!-- This is my table body -->
<tr *ngFor="let item of items">
<td *ngFor="let column of columns; trackBy: trackByColumn">
<app-cell [item]="item" [column]="column"></app-cell>
</td>
</tr>
<!-- This is a part of my cell component -->
<div class="editinplace" (click)="edit()" *ngIf="column.inlineEditable">
<svg-icon src="assets/edit_inplace.svg" class="svg"></svg-icon>
</div>Run Code Online (Sandbox Code Playgroud)
我的单元格组件被多次渲染,并且在某些特定条件下它可能会引用一个 SVG 文件。
该 SVG 文件非常小(210B),在 Chrome 中加载需要 1 秒(在 IE 中为 10 秒)。所以,我不确定我的问题是什么。
更多信息:
1) 缓存已启用
2) 查看网络选项卡,图像仅被请求一次。
3)如果我单独加载图像,它会非常快。所以我认为这与我的 ngFor 有关。
有关如何解决此性能问题的任何想法?