我在这里有一个非常奇怪的问题。我有A类,B类和C类。我想创建可以创建A对象的B类对象。但是如何限制C类创建A类对象。
一种方法是在类B中定义类A,这样只有类B才能创建类A的实例,而类C不能访问类A.
但是,我认为嵌套是一种错误的方式。
我们有办法限制对象的创建吗?是否可以使用属性和反射来帮助限制?如果可能的话有推荐的方法吗?
请分享您的想法。提前谢谢。
答案 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;
}
}