如何用静态方法描述没有构造函数的c#接口?

如何用静态方法描述没有构造函数的c#接口?,c#,C#,我想为singleton创建接口。 但接口不能禁止公共构造函数和descripb静态方法。如何解决这些问题?基本上,你不能。接口不能包含静态方法,也不能对可用的构造函数类型设置任何约束 您可能对我的概念感兴趣,这将允许强制执行特定静态成员的想法存在,但不允许强制执行缺少构造函数。您不能拥有ISingleton接口,原因有二: 接口不能具有静态 成员 接口不能包含 建设者 如果您愿意,您可以拥有一个ASingleton抽象类。正如其他人所说,您不能使用接口。您可以创建一个通用的单例类: publi

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

基本上,你不能。接口不能包含静态方法,也不能对可用的构造函数类型设置任何约束


您可能对我的概念感兴趣,这将允许强制执行特定静态成员的想法存在,但不允许强制执行缺少构造函数。

您不能拥有
ISingleton
接口,原因有二:

  • 接口不能具有静态 成员
  • 接口不能包含 建设者

  • 如果您愿意,您可以拥有一个
    ASingleton
    抽象类。

    正如其他人所说,您不能使用接口。您可以创建一个通用的单例类:

    public static class Singleton<T> where T : new()
    {
        public static T Instance { get; private set; }
    
        static Singleton() { Instance = new T(); }
    }
    
    公共静态类单例,其中T:new()
    {
    公共静态T实例{get;private set;}
    静态单例(){Instance=new T();}
    }
    

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

    我必须是一名算命师才能理解这个问题:(您可能想检查此项-静态方法在接口中无效。他似乎想定义接口以强制接口的每个实现为单例。您是否检查了我建议的通用版本?这可能是您试图执行的操作。错误:静态成员XXX不能标记为override、virtual或abstracT