我可以限制哪些类可以实例化另一个类吗?

Bra*_*ore 3 c# oop

可能重复:
C#中的工厂模式:如何确保对象实例只能由工厂类创建?

假设我有一个知道如何制作Square的Factory类.如果我觉得只有Factory类知道如何制作一个正方形并且我想阻止其他人(即使在同一个程序集中)创建一个正确的(如果有这样的东西)那么方法呢?

Jon*_*eet 6

根据您的具体情况,您可以这样做:

public class Square
{
    // Only Square and classes nested within it can call this
    private Square()
    {
    }

    public class Factory
    {
        public Square CreateSquare()
        {
            return new Square();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后:

Square.Factory factory = new Square.Factory();
Square square = factory.CreateSquare();
Run Code Online (Sandbox Code Playgroud)