【问题标题】:How to describe c# interface without the constructor and with static method? [closed]如何在没有构造函数和静态方法的情况下描述 c# 接口? [关闭]
【发布时间】:2010-07-09 07:01:39
【问题描述】:

我想为单例创建接口。 但是接口不能禁止公共构造函数和描述静态方法。如何解决这些问题?

【问题讨论】:

  • 我必须是算命先生才能理解这个问题:(
  • 你可能想看看这个 - stackoverflow.com/questions/2855245/…
  • 静态方法在接口中无效
  • 看来他是想定义接口来强制接口的每个实现都是Singleton。
  • 你检查过我建议的通用版本吗?这可能是你想要做的。

标签: c#


【解决方案1】:

您不能拥有ISingleton 接口有两个原因:

  1. 接口不能有静态 成员
  2. 接口不能包含 构造函数

如果你愿意,你可以有一个 ASingleton 抽象类。

【讨论】:

  • 错误:不能将静态成员 XXX 标记为覆盖、虚拟或抽象。
【解决方案2】:

你不能,基本上。接口不能包含静态方法,也不能对可用的构造函数进行任何限制。

您可能对我的 static interfaces 概念感兴趣,它允许强制执行特定静态成员的想法存在 - 但它不允许您强制执行 没有构造函数。

【讨论】:

    【解决方案3】:

    正如其他人所说,您不能为此使用界面。你可以做的是创建一个通用的单例类:

    public static class Singleton<T> where T : new()
    {
        public static T Instance { get; private set; }
    
        static Singleton() { Instance = new T(); }
    }
    

    这样,您只需为所有单例使用一个泛型类。当然,您将无法针对不同的类型以不同的方式初始化单例(可以更改为在实例上实现接口或派生类)。

    【讨论】:

      猜你喜欢
      • 2013-08-12
      • 1970-01-01
      • 2011-11-05
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      相关资源
      最近更新 更多