有人可以检查这个版本的 Generic Multiton 是否是惰性的和线程安全的?
我根据Jon Skeet 的惰性线程安全 Singleton 版本、O'Reilly 的 C# Design Patterns 和 Multiton 的 Wikipedia C# 版本对其进行了编码。
public sealed class Multiton<T> where T : class, new() {
private static readonly Dictionary<object, Lazy<T>> _instances = new Dictionary<object, Lazy<T>>();
public static T GetInstance(object key) {
Lazy<T> instance;
if (!_instances.TryGetValue(key, out instance)) {
instance = new Lazy<T>(() => new T());
_instances.Add(key, instance);
}
return instance.Value;
}
private Multiton() {
}
}