嗨,我想拥有一个无法实例化的类,但可以将其作为静态字段添加到另一个类中,但是我无法实现;

这是我所做的;

    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类声明为私有类来实现此目的:

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

        public void Call()
        {
        }
    }

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


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

10-05 20:33