web-dev-qa-db-ja.com

内部クラスの外部クラスオブジェクトにアクセスできますか

私はこのようなクラスを3つ持っています。

class A
{
    public class innerB
       {
       //Do something
       }

    public class innerC
       {
        //trying to access objB here directly or indirectly over here. 
        //I dont have to create an object of innerB, but to access the object created by A
        //i.e.
             innerB objInnerB = objB;
        //not like this
             innerB objInnerB= new innerB();
       }

private innerB objB{get;set;}  **//Private**

public A()
   {
    objB= new innerB();
   }
}

クラスAで作成されたクラスCのクラスBのオブジェクトにアクセスしたいのですが、クラスCのクラスAのオブジェクトに何らかの変更を加えることは可能ですか?イベントを作成するなどしてクラスAのオブジェクトを取得できますか?.

編集:上記の質問をする際の私の間違い。Aで作成されたBのオブジェクトはパブリックではなくプライベートです

イベントを作成してこれを行うことは可能ですか

とにかくクラスAで扱えるイベントを発生させることができれば問題は解決します。

19
Shantanu Gupta

私があなたを正しく読んでいるなら、それを渡さずにinnerC内のクラスAのobjBプロパティにアクセスしたいでしょう。

この記事で説明されているように、これはC#の内部クラスが機能する方法ではありません。 C#のネストされたクラスは、C++のネストされたクラスに似ており、Java内部クラス ではありません

InnerCからA.objBにアクセスする場合は、どういうわけかクラスAをinnerCに渡す必要があります。

22
Andrew Anderson

OuterClassへの参照をInnerClassに渡す必要があります。

public class OuterClass
{
    //OuterClass methods

    public class InnerClass
    {
        private OuterClass _outer;

        public InnerClass(OuterClass outer)
        {
            _outer = outer;
        }
    }
}

その後、すべてのInnerClassメソッドでその参照を使用できます。

9
dlras2