限制对象的创建

时间:2012-06-16 07:35:51

标签: c# .net instantiation encapsulation access-modifiers

我在这里有一个非常奇怪的问题。我有A类,B类和C类。我想创建可以创建A对象的B类对象。但是如何限制C类创建A类对象。

一种方法是在类B中定义类A,这样只有类B才能创建类A的实例,而类C不能访问类A.

但是,我认为嵌套是一种错误的方式。

我们有办法限制对象的创建吗?是否可以使用属性和反射来帮助限制?如果可能的话有推荐的方法吗?

请分享您的想法。提前谢谢。

2 个答案:

答案 0 :(得分:1)

您可以将A类和B类放在一个程序集中,并将A类的构造函数标记为内部。

这样,只有该程序集中的类才能创建A类实例。

答案 1 :(得分:0)

您可以将构造函数设为私有,并创建返回A实例的fabric方法,此方法中的参数将为B的实例。

public class A
{
  private A (){}

    public static Instance(B BInstance)
    {
       A result = null;
       if (BInstance != null)
       {
         result = new A(); 
         //create here 
       }

       return result;

    }


    }