的抽象基类,迫使每个派生类是单身 [英] Abstract base class to force each derived classes to be Singleton
本文介绍了的抽象基类,迫使每个派生类是单身的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我如何做一个抽象类,不得强迫每一个派生类是单身?我使用C#。
How do I make an abstract class that shall force each derived classes to be Singleton ? I use C#.
推荐答案
当你想enfore表示编译时检查,这是不可能的。随着运行时检查你可以做到这一点。这不是漂亮,但它是可能的。这里有一个例子:
When you want to enfore compile time checking, this is not possible. With runtime checking you can do this. It's not pretty, but it's possible. Here's an example:
public abstract class Singleton
{
private static readonly object locker = new object();
private static HashSet<object> registeredTypes = new HashSet<object>();
protected Singleton()
{
lock (locker)
{
if (registeredTypes.Contains(this.GetType()))
{
throw new InvalidOperationException(
"Only one instance can ever be registered.");
}
registeredTypes.Add(this.GetType());
}
}
}
public class Repository : Singleton
{
public static readonly Repository Instance = new Repository();
private Repository()
{
}
}
这篇关于的抽象基类,迫使每个派生类是单身的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文