可以作为参数传递到任何地方的私有类 - 这样的事情可能吗?

时间:2011-02-10 20:48:58

标签: c#

我想定义一个类ClassA,它可以作为参数传递给项目中的任何方法或类(全局范围)。但是,我想强制执行一个约束,以确保ClassA只能在单个ClassB的范围内实例化。换句话说,我希望类具有关于ClassA的私有范围,同时仍然能够将该对象作为参数传递给在整个项目中分布的方法和类。

这可能吗?

3 个答案:

答案 0 :(得分:6)

你可以使ClassA抽象化,并将具体实现私有化为ClassB(作为嵌套类)。

答案 1 :(得分:4)

您可以使用内部构造函数使ClassA成为公共抽象类。

然后,ClassB可以定义一个派生自此的类,并创建“真实”实例。这将阻止程序集之外的任何人生成ClassA类型。

答案 2 :(得分:3)

如果我正确理解你想要做什么.....

使ClassB成为ClassA的嵌套类,并使ClassA的构造函数成为私有。