在抽象类和单例上做一些工作,我遇到了StackOverflow的许多有用资源。但是,我仍然对单身人士班的孙辈有疑问。我的单例代码看起来像这样,取自关于如何抽象单例类的答案?,看起来像这样:public abstract class Singleton<T> where T : Singleton<T>{ private static readonly Lazy<T> _instance; static Singleton() { _instance = new Lazy<T>(() => { try { // Binding flags include private constructors. var constructor = typeof(T).GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, Type.EmptyTypes, null); return (T)constructor.Invoke(null); } catch (Exception exception) { throw new SingletonConstructorException(exception); } }); } public static T Instance { get { return _instance.Value; } }}我的此类孩子是使用以下语法创建的:public class SingletonChild : Singleton<SingletonChild>{ [code]}现在,我的问题就在这里:一个人如何声明一个孩子类别的孩子,或一个单身人士的孙子?我相信这是这两者之一,但是我不确定哪一个:public class SingletonGrandChild : SingletonChild { [code] }或者public class SingletonGrandChild : SingletonChild<SingletonGrandChild> { [code] }谁能提供一些有关其见解的见解?谢谢!
2 回答
ITMISS
TA贡献1871条经验 获得超8个赞
在对继承进行建模时,子类将考虑父类的class
定义以创建继承关系。在您的情况下,正确的答案是:
public class SingletonGrandChild : SingletonChild { [code] }
由于SingletonChild在其类定义中未声明泛型,因此从其继承时无需这样做(实际上这样做会导致编译错误)。
我不确定您要通过此设置完成哪些操作,但是无论如何,我希望此信息对您的整体理解有所帮助。
- 2 回答
- 0 关注
- 242 浏览
添加回答
举报
0/150
提交
取消