0

ここで非常に奇妙な質問があります。クラスA、クラスB、クラスCがあります。Aのオブジェクトを作成できるクラスBのオブジェクトを作成したいのですが、クラスCがクラスAのオブジェクトを作成することを制限する方法.

1 つの方法は、クラス B 内にクラス A を定義して、クラス B のみがクラス A のインスタンスを作成でき、クラス C がクラス A にアクセスできないようにすることです。

しかし、ネストは間違った方法だと思います。

オブジェクトの作成を制限する方法はありますか? 属性とリフレクションを使用して制限することは可能ですか? 可能な場合、推奨される方法はありますか?

あなたの考えを共有してください。前もって感謝します。

4

2 に答える 2

1

クラス A と B を 1 つのアセンブリに配置し、クラス A のコンストラクターを internal としてマークすることができます。

このようにして、そのアセンブリ内のクラスのみがクラス A のインスタンスを作成できます。

于 2012-06-16T07:38:13.390 に答える
0

コンストラクターをプライベートにして、A のインスタンスを返すファブリック メソッドを作成できます。このメソッドのパラメーターは B のインスタンスになります。

public class A
{
  private A (){}

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

       return result;

    }


    }
于 2012-06-16T07:47:33.543 に答える