【wif系列】C#之单例模式(Singleton Pattern)最佳实践 (2)

通过泛型类传参的方式实现如下:

/// <summary> /// 用于从另一个类创建或获取单例的静态助手。 /// </summary> /// <typeparam>要创建或获取单例的类型。</typeparam> public static class SingletonProvider<T> where T : class, new() { #region Fields /// <summary> /// 获取给定类型的单例。 /// </summary> private static readonly Lazy<T> _lazy = new Lazy<T>(() => new T()); #endregion #region Properties /// <summary> /// 获取给定类型的单例。 /// </summary> public static T Instance => _lazy.Value; #endregion }

除了泛型类传参,还可以通过Get方法传参,实现如下:

/// <summary> /// 用于从另一个类创建或获取单例的静态助手。 /// </summary> public static class SingletonProvider { #region Methods /// <summary> /// 获取指定类型的单例。 /// </summary> /// <typeparam>单例类型。</typeparam> /// <returns>The <see cref="TParameter" />单例对象。</returns> public static TParameter Get<TParameter>() where TParameter : class, new() { return SingletonProvider<TParameter>.Instance; } #endregion } 总结

有了以上两种生产单例的方式,我们可以在开发中愉快的使用单例,而免除了具体的繁琐实现。

wif 项目代码:https://github.com/LeoYang610/wif

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwsfw.html