c# - 防止类被实例化

标签 c# .net winforms

嗨,我想要一个不能实例化但可以作为静态字段添加到另一个类的类,但我无法实现;

这是我所做的;

    public class ValueListManager
    {
        public static Operations myOps { get { return new Ops(); } }         
    }

    public interface Operations
    {
        void Call();
    }

    public class Ops : Operations
    { 

        public void Call()
        {

        }
    }

我不想在其他任何地方实例化 Ops 类。基本上我希望能够;

    ValueListManager.Operations.Call();

但我不想像这样使用 ops 类;

    var ops = new Ops();

有什么办法可以实现吗?

最佳答案

您可以通过在要使用它的 ValueListManager 类中将 Ops 类声明为私有(private)类来实现:

public class ValueListManager
{
    private class Ops : Operations
    {
        public Ops()
        {
        }

        public void Call()
        {
        }
    }

    public static Operations myOps { get { return new Ops(); } }
}

请注意,在这个基于您的代码的示例中,每次您访问 myOps 属性时都会创建一个 Ops 类的新实例。如果您不想这样,您需要在创建 Ops 实例后将其存储在静态字段中,并在属性的 Getter 中使用它。

关于c# - 防止类被实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35914692/

相关文章:

c# - 从 datagridview 选定的行更新 mysql 数据库

c# - 使用 c# QueueUserWorkItem 似乎并没有执行所有的方法

c# - 从 C# 代码调用 HTTPS JBoss 服务会引发身份验证错误

c# - 用 C# 控制 TPM

c# - 重定向.net程序的标准输入和输出

asp.net - 如何在 Visual Studio 2017 中重命名发布配置文件?

c# - ILDasm Visual Studio 2010

.net - 带有 json 对象的 ajax post 中的 antiforgerytoken ASP.NET MVC

c# - 带有 ProgressBar 的 BackgroundWorker - 跨线程操作无效

javascript - 错误: Unable to get value of the property 'length:' object is null or undefined