Jar*_*Bot 2 c# instantiation sharing
我有一个程序集,其目的是基本日志记录。
我有其他程序集引用了这个程序集。
有没有办法在引用程序集之间共享对象实例?那么,对于一个日志活动,只使用日志类的一个实例?
例如,如果 Logger 程序集/命名空间中的方法被调用AddInfo()。当程序集 A 有一个类需要记录它使用的信息时loggerInstance1.AddInfo()……当程序集 B 需要做同样的事情时……它重复使用相同的loggerInstance1.AddInfo()……而不是loggerInstance2.AddInfo()
......现在是完全不同的东西。
另一个完全不同的策略是引用 system.web(是的,您甚至可以在桌面应用程序中引用此程序集):
using System.Web;
Run Code Online (Sandbox Code Playgroud)
然后将您想要“全局共享”的任何类放入缓存中:
HttpRuntime.Cache.Insert("Logger", LoggingObject, null, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration);
Run Code Online (Sandbox Code Playgroud)
最后,要获取全局对象的实例,只需从缓存中提取它:
object LoggingObject = HttpRuntime.Cache.Get("Logger");
Run Code Online (Sandbox Code Playgroud)
营商事工。即时全局可访问、一次性使用的对象,不需要单例模式。
当然,您也可以稍微更改逻辑以尝试获取 Logger,如果它不存在,则第一次创建它并将其放入缓存以备将来使用。这仅取决于您是否知道访问顺序。
| 归档时间: |
|
| 查看次数: |
3738 次 |
| 最近记录: |