我有三个这样的课程。
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级处理的事件,那么我的问题就可以解决了。
答案 0 :(得分:21)
如果我正确地读你,你想在innerC中访问类A的objB属性而不传递它。
这不是C#内部类的工作方式,如本文所述:C# nested classes are like C++ nested classes, not Java inner classes
如果你想从innerC访问A.objB,那么你将不得不以某种方式将A类传递给innerC。
答案 1 :(得分:9)
您需要将OuterClass
的引用传递给InnerClass
,可能在构造函数中,例如:
public class OuterClass
{
//OuterClass methods
public class InnerClass
{
private OuterClass _outer;
public InnerClass(OuterClass outer)
{
_outer = outer;
}
}
}
然后,您可以在所有InnerClass
方法中使用该引用。
答案 2 :(得分:-1)
由于您的类B与C类在同一范围内,即在A类中,您将能够从嵌套类型C实例化嵌套类型B并使用它。