为了账号安全,请及时绑定邮箱和手机立即绑定

C#中抽象单例类的孙子代

C#中抽象单例类的孙子代

C#
呼如林 2021-03-30 18:11:09
在抽象类和单例上做一些工作,我遇到了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在其类定义中未声明泛型,因此从其继承时无需这样做(实际上这样做会导致编译错误)。

我不确定您要通过此设置完成哪些操作,但是无论如何,我希望此信息对您的整体理解有所帮助。


查看完整回答
反对 回复 2021-04-10
  • 2 回答
  • 0 关注
  • 206 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信