类A不能直接实例化,如 A a = new A(); 禁止象上面直接实例化, 而必须通过B的方法来创建A, 如: A a = B.createA();
就是说: A a = new A(); //不允许这样直接实例化 A a = B.createA(); //只能通过B来创建A
------解决方案-------------------- 使用嵌套类 class B{ public static A createA();
class A{ ... }
}
------解决方案--------------------
------解决方案--------------------
C# code
class Program
{
static void Main(string[] args)
{
A a=B.CreateA();
Console.WriteLine(a.aa);
Console.Read();
}
}
class A {
private A()//禁止直接实例化
{
}
public int aa = 2;
}
class B
{
public static A CreateA()
{
//通过反射实例化
Type t = typeof(A);
A a = t.Assembly.CreateInstance(t.FullName, false, BindingFlags.CreateInstance | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.ExactBinding, null, null, null, null) as A;
return a;
}
}
------解决方案-------------------- 分在不同的 dll 里面,不能用嵌套